nextclaw 0.49.0 → 0.50.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 (494) hide show
  1. package/README.md +3 -1
  2. package/dist/cli/app/index.js +2 -2
  3. package/dist/cli/launcher/index.js +1 -1
  4. package/dist/{distribution-BAU3XUQJ.js → distribution-DzRLAMTC.js} +1 -1
  5. package/dist/{distribution-CND3AWXk.js → distribution-kH-YiPGh.js} +1 -1
  6. package/dist/{distribution-CND3AWXk.js.map → distribution-kH-YiPGh.js.map} +1 -1
  7. package/dist/feedback-maintenance-client.service-DIMfY_yr.js +85 -0
  8. package/dist/feedback-maintenance-client.service-DIMfY_yr.js.map +1 -0
  9. package/dist/index.d.ts +36 -1
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +2 -1
  12. package/dist/{nextclaw-cli-app-CjtgVEdo.js → nextclaw-cli-app-Mz2hYz_-.js} +253 -5
  13. package/dist/nextclaw-cli-app-Mz2hYz_-.js.map +1 -0
  14. package/package.json +18 -18
  15. package/resources/USAGE.md +22 -0
  16. package/resources/skills/feedback-maintainer/SKILL.md +21 -0
  17. package/ui-dist/.vite/manifest.json +1299 -994
  18. package/ui-dist/.vite/manifest.json.gz +0 -0
  19. package/ui-dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  20. package/ui-dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  21. package/ui-dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  22. package/ui-dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  23. package/ui-dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  24. package/ui-dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  25. package/ui-dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  26. package/ui-dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  27. package/ui-dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  28. package/ui-dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  29. package/ui-dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  30. package/ui-dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  31. package/ui-dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  32. package/ui-dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  33. package/ui-dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  34. package/ui-dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  35. package/ui-dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  36. package/ui-dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  37. package/ui-dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  38. package/ui-dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  39. package/ui-dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  40. package/ui-dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  41. package/ui-dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  42. package/ui-dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  43. package/ui-dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  44. package/ui-dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  45. package/ui-dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  46. package/ui-dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  47. package/ui-dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  48. package/ui-dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  49. package/ui-dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  50. package/ui-dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  51. package/ui-dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  52. package/ui-dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  53. package/ui-dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  54. package/ui-dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  55. package/ui-dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  56. package/ui-dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  57. package/ui-dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  58. package/ui-dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  59. package/ui-dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  60. package/ui-dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  61. package/ui-dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  62. package/ui-dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  63. package/ui-dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  64. package/ui-dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  65. package/ui-dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  66. package/ui-dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  67. package/ui-dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  68. package/ui-dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  69. package/ui-dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  70. package/ui-dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  71. package/ui-dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  72. package/ui-dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  73. package/ui-dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  74. package/ui-dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  75. package/ui-dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  76. package/ui-dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  77. package/ui-dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  78. package/ui-dist/assets/{abnfDiagram-VRR7QNED-Kzlh3ZEC.js → abnfDiagram-VRR7QNED-DX_u5BBX.js} +1 -1
  79. package/ui-dist/assets/abnfDiagram-VRR7QNED-DX_u5BBX.js.gz +0 -0
  80. package/ui-dist/assets/{account-panel-UvHFa8Kl.js → account-panel-BXTCFv7d.js} +1 -1
  81. package/ui-dist/assets/account-panel-BXTCFv7d.js.gz +0 -0
  82. package/ui-dist/assets/{aiden0z-pptx-renderer.es-k1xZLzeo.js → aiden0z-pptx-renderer.es-C-E9e5yB.js} +1 -1
  83. package/ui-dist/assets/aiden0z-pptx-renderer.es-C-E9e5yB.js.gz +0 -0
  84. package/ui-dist/assets/{api-Dffeij78.js → api-DqzQ-_3w.js} +1 -1
  85. package/ui-dist/assets/api-DqzQ-_3w.js.gz +0 -0
  86. package/ui-dist/assets/{app-data-DzaIMy4D.js → app-data-C54N2p8b.js} +1 -1
  87. package/ui-dist/assets/app-data-C54N2p8b.js.gz +0 -0
  88. package/ui-dist/assets/app-presenter-provider-V0xnU_Wb.js +115 -0
  89. package/ui-dist/assets/app-presenter-provider-V0xnU_Wb.js.gz +0 -0
  90. package/ui-dist/assets/app-presenter-provider-jNGlmBLe.css +1 -0
  91. package/ui-dist/assets/app-presenter-provider-jNGlmBLe.css.gz +0 -0
  92. package/ui-dist/assets/{appearance-settings-page-D8cWniw-.js → appearance-settings-page-83T2AtVm.js} +1 -1
  93. package/ui-dist/assets/appearance-settings-page-83T2AtVm.js.gz +0 -0
  94. package/ui-dist/assets/{arc-CpivM836.js → arc-Cxwa624o.js} +1 -1
  95. package/ui-dist/assets/arc-Cxwa624o.js.gz +0 -0
  96. package/ui-dist/assets/architecture-TIHT7OUA-DEt0Abz9.js +1 -0
  97. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-ifjW1qjI.js → architectureDiagram-ZJ3FMSHR-D8mCj0H1.js} +1 -1
  98. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-D8mCj0H1.js.gz +0 -0
  99. package/ui-dist/assets/{blockDiagram-677ZJIJ3-C_zeJrKF.js → blockDiagram-677ZJIJ3-CbGC1IHl.js} +1 -1
  100. package/ui-dist/assets/{blockDiagram-677ZJIJ3-C_zeJrKF.js.gz → blockDiagram-677ZJIJ3-CbGC1IHl.js.gz} +0 -0
  101. package/ui-dist/assets/{c4Diagram-LMCZKHZV-CpapRftp.js → c4Diagram-LMCZKHZV-BQhGC1Vc.js} +1 -1
  102. package/ui-dist/assets/c4Diagram-LMCZKHZV-BQhGC1Vc.js.gz +0 -0
  103. package/ui-dist/assets/channel-CxQkbwRD.js +1 -0
  104. package/ui-dist/assets/{channels-list-page-B_fYP1Pn.js → channels-list-page-Bv7CVSqV.js} +1 -1
  105. package/ui-dist/assets/channels-list-page-Bv7CVSqV.js.gz +0 -0
  106. package/ui-dist/assets/chunk-2Q5K7J3B-ClVhziok.js +1 -0
  107. package/ui-dist/assets/{chunk-32BRIVSS-BKBwdmKR.js → chunk-32BRIVSS-B74ZZwYG.js} +1 -1
  108. package/ui-dist/assets/chunk-32BRIVSS-B74ZZwYG.js.gz +0 -0
  109. package/ui-dist/assets/{chunk-52WLFC77-BgZRCpDx.js → chunk-52WLFC77-BvmxW_f_.js} +1 -1
  110. package/ui-dist/assets/chunk-52WLFC77-BvmxW_f_.js.gz +0 -0
  111. package/ui-dist/assets/{chunk-5FCAYU7R-YWfOINJi.js → chunk-5FCAYU7R-DQvBRnwL.js} +1 -1
  112. package/ui-dist/assets/{chunk-5HE753X5-BZ6I07d2.js → chunk-5HE753X5-CDIH0_y3.js} +1 -1
  113. package/ui-dist/assets/{chunk-5JV3BV7I-B7QYgZU5.js → chunk-5JV3BV7I-CcevlKd-.js} +1 -1
  114. package/ui-dist/assets/chunk-5JV3BV7I-CcevlKd-.js.gz +0 -0
  115. package/ui-dist/assets/{chunk-5TONJI2A-DjyQwgL2.js → chunk-5TONJI2A-_3dxVdnY.js} +1 -1
  116. package/ui-dist/assets/chunk-5TONJI2A-_3dxVdnY.js.gz +0 -0
  117. package/ui-dist/assets/{chunk-5VM5RSS4-DheHV7X2.js → chunk-5VM5RSS4-pGO5vvo-.js} +1 -1
  118. package/ui-dist/assets/{chunk-7BUUIJ7U-D6bq2PKF.js → chunk-7BUUIJ7U-DEKF5uAN.js} +1 -1
  119. package/ui-dist/assets/chunk-7BUUIJ7U-DEKF5uAN.js.gz +0 -0
  120. package/ui-dist/assets/{chunk-BIQX33UG-CL9x0ibm.js → chunk-BIQX33UG-CjBFgq2r.js} +1 -1
  121. package/ui-dist/assets/{chunk-C7G6YPKG-8z3B6RUH.js → chunk-C7G6YPKG-e_K9OGTz.js} +1 -1
  122. package/ui-dist/assets/chunk-C7G6YPKG-e_K9OGTz.js.gz +0 -0
  123. package/ui-dist/assets/{chunk-CQNSW5MT-DpHkxY3n.js → chunk-CQNSW5MT-C2IiHyHz.js} +1 -1
  124. package/ui-dist/assets/{chunk-CYSBUYHQ-DIJDLsdJ.js → chunk-CYSBUYHQ-DCC6KmGp.js} +1 -1
  125. package/ui-dist/assets/{chunk-EMLP6XTP-B-LjAyVd.js → chunk-EMLP6XTP-BYGgekQ0.js} +1 -1
  126. package/ui-dist/assets/{chunk-EX3LRPZG-BChuEPvO.js → chunk-EX3LRPZG-FGcwuVsA.js} +1 -1
  127. package/ui-dist/assets/chunk-EX3LRPZG-FGcwuVsA.js.gz +0 -0
  128. package/ui-dist/assets/{chunk-FWX5IMBZ-fBFt0u3f.js → chunk-FWX5IMBZ-CV3Ih_Os.js} +2 -2
  129. package/ui-dist/assets/chunk-FWX5IMBZ-CV3Ih_Os.js.gz +0 -0
  130. package/ui-dist/assets/{chunk-HOUHSVGY-MD0SpW5A.js → chunk-HOUHSVGY-CXpq_hfV.js} +1 -1
  131. package/ui-dist/assets/chunk-HOUHSVGY-CXpq_hfV.js.gz +0 -0
  132. package/ui-dist/assets/{chunk-ICXQ74PX-DvCcw_hz.js → chunk-ICXQ74PX-CZIpjupq.js} +1 -1
  133. package/ui-dist/assets/chunk-ICXQ74PX-CZIpjupq.js.gz +0 -0
  134. package/ui-dist/assets/{chunk-JG7HCLWE-B8zqBnU9.js → chunk-JG7HCLWE-CdgwBpW7.js} +1 -1
  135. package/ui-dist/assets/chunk-JG7HCLWE-CdgwBpW7.js.gz +0 -0
  136. package/ui-dist/assets/{chunk-JWPE2WC7-C9efnkGb.js → chunk-JWPE2WC7-BPjAZpOQ.js} +1 -1
  137. package/ui-dist/assets/{chunk-MOJQB5TN-gXbfqoqq.js → chunk-MOJQB5TN-DbJDm8to.js} +1 -1
  138. package/ui-dist/assets/chunk-MOJQB5TN-DbJDm8to.js.gz +0 -0
  139. package/ui-dist/assets/{chunk-MOZMSUNE-twIwdkqC.js → chunk-MOZMSUNE-BUa1fqKn.js} +1 -1
  140. package/ui-dist/assets/{chunk-OGEWGWER-DdR0_cWK.js → chunk-OGEWGWER-CtnzLgRu.js} +1 -1
  141. package/ui-dist/assets/{chunk-OSBZ3O6U-D7D58Foa.js → chunk-OSBZ3O6U-fUgdpTUM.js} +1 -1
  142. package/ui-dist/assets/{chunk-PUDLZKDR-DPILgOVY.js → chunk-PUDLZKDR-CtDWZT9-.js} +1 -1
  143. package/ui-dist/assets/chunk-PUDLZKDR-CtDWZT9-.js.gz +0 -0
  144. package/ui-dist/assets/{chunk-Q4XR5HBZ-C0JJx7lW.js → chunk-Q4XR5HBZ-BxnK2qxr.js} +1 -1
  145. package/ui-dist/assets/chunk-Q4XR5HBZ-BxnK2qxr.js.gz +0 -0
  146. package/ui-dist/assets/{chunk-QBLGF6JB-Dbsf69ng.js → chunk-QBLGF6JB-CH4UKoCF.js} +1 -1
  147. package/ui-dist/assets/{chunk-R7FJI6CG-Bb8n616-.js → chunk-R7FJI6CG-BxwFoF1v.js} +1 -1
  148. package/ui-dist/assets/chunk-R7FJI6CG-BxwFoF1v.js.gz +0 -0
  149. package/ui-dist/assets/{chunk-RYQCIY6F-1HOsOrSl.js → chunk-RYQCIY6F-DpHAmq7O.js} +1 -1
  150. package/ui-dist/assets/chunk-RYQCIY6F-DpHAmq7O.js.gz +0 -0
  151. package/ui-dist/assets/{chunk-U6XO7XAA-BAFDVb1v.js → chunk-U6XO7XAA-BjH2VUHU.js} +1 -1
  152. package/ui-dist/assets/chunk-U6XO7XAA-BjH2VUHU.js.gz +0 -0
  153. package/ui-dist/assets/{chunk-V7JOEXUC-8-g68lu5.js → chunk-V7JOEXUC-DKJZ3HGj.js} +1 -1
  154. package/ui-dist/assets/chunk-V7JOEXUC-DKJZ3HGj.js.gz +0 -0
  155. package/ui-dist/assets/chunk-VAUOI2AC-DZQxkIsv.js +1 -0
  156. package/ui-dist/assets/{chunk-VR4S4FIN-P6UGmaYd.js → chunk-VR4S4FIN-Cf-o2GtI.js} +1 -1
  157. package/ui-dist/assets/{chunk-WYO6CB5R-6wjFTXNP.js → chunk-WYO6CB5R-zeNXGm20.js} +3 -2
  158. package/ui-dist/assets/chunk-WYO6CB5R-zeNXGm20.js.gz +0 -0
  159. package/ui-dist/assets/chunk-XXDRQBXY-BkExtw5C.js +1 -0
  160. package/ui-dist/assets/{chunk-YOTPTUD7-CLYXVZAi.js → chunk-YOTPTUD7-Ck87Kqxe.js} +1 -1
  161. package/ui-dist/assets/{chunk-ZGVPDNZ5-BRTmSAhp.js → chunk-ZGVPDNZ5-BbfK6Bfd.js} +1 -1
  162. package/ui-dist/assets/chunk-ZGVPDNZ5-BbfK6Bfd.js.gz +0 -0
  163. package/ui-dist/assets/{chunk-ZIRB5QZD-CH_1eoSV.js → chunk-ZIRB5QZD-BDpzh4Yl.js} +1 -1
  164. package/ui-dist/assets/chunk-ZIRB5QZD-BDpzh4Yl.js.gz +0 -0
  165. package/ui-dist/assets/classDiagram-OUVF2IWQ-Bd6apBb-.js +1 -0
  166. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CYxUZGCI.js +1 -0
  167. package/ui-dist/assets/{config-split-page-6hHiiapl.js → config-split-page-DqAXKLmG.js} +1 -1
  168. package/ui-dist/assets/config-split-page-DqAXKLmG.js.gz +0 -0
  169. package/ui-dist/assets/{confirm-dialog-ClT6iaj8.js → confirm-dialog-BTKCWMn6.js} +1 -1
  170. package/ui-dist/assets/confirm-dialog-BTKCWMn6.js.gz +0 -0
  171. package/ui-dist/assets/{cose-bilkent-JH36ORCC-L7w_qScX.js → cose-bilkent-JH36ORCC-CQfMxKCT.js} +1 -1
  172. package/ui-dist/assets/cose-bilkent-JH36ORCC-CQfMxKCT.js.gz +0 -0
  173. package/ui-dist/assets/cynefin-VYW2F7L2-CV0bFLH9.js +1 -0
  174. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-Bay7uDSR.js → cynefinDiagram-TSTJHNR4-CxFTiC-p.js} +1 -1
  175. package/ui-dist/assets/cynefinDiagram-TSTJHNR4-CxFTiC-p.js.gz +0 -0
  176. package/ui-dist/assets/{dagre-CJ_hX8xv.js → dagre-CaBNMcB1.js} +1 -1
  177. package/ui-dist/assets/dagre-CaBNMcB1.js.gz +0 -0
  178. package/ui-dist/assets/{dagre-VKFMJZFB-DDhk-2B3.js → dagre-VKFMJZFB-S_7Hc7bI.js} +1 -1
  179. package/ui-dist/assets/dagre-VKFMJZFB-S_7Hc7bI.js.gz +0 -0
  180. package/ui-dist/assets/{desktop-capabilities-page-CB5pniTx.js → desktop-capabilities-page-zLzCSB7A.js} +1 -1
  181. package/ui-dist/assets/desktop-capabilities-page-zLzCSB7A.js.gz +0 -0
  182. package/ui-dist/assets/{desktop-update-config-OuQV73gg.js → desktop-update-config-PmofcFf6.js} +1 -1
  183. package/ui-dist/assets/desktop-update-config-PmofcFf6.js.gz +0 -0
  184. package/ui-dist/assets/{diagram-FQU43EPY-somFq5y8.js → diagram-FQU43EPY-C7zENvFb.js} +1 -1
  185. package/ui-dist/assets/diagram-FQU43EPY-C7zENvFb.js.gz +0 -0
  186. package/ui-dist/assets/{diagram-G47NLZAW-hzgyQsPd.js → diagram-G47NLZAW-DqYTCqZA.js} +1 -1
  187. package/ui-dist/assets/diagram-G47NLZAW-DqYTCqZA.js.gz +0 -0
  188. package/ui-dist/assets/{diagram-NH7WQ7WH-BkJ4gEQJ.js → diagram-NH7WQ7WH-BfSJtXRc.js} +1 -1
  189. package/ui-dist/assets/diagram-NH7WQ7WH-BfSJtXRc.js.gz +0 -0
  190. package/ui-dist/assets/{diagram-OA4YK3LP-CS3ZkK4w.js → diagram-OA4YK3LP-CFO-j67H.js} +1 -1
  191. package/ui-dist/assets/diagram-OA4YK3LP-CFO-j67H.js.gz +0 -0
  192. package/ui-dist/assets/{diagram-WEI45ONY-BApo-JHS.js → diagram-WEI45ONY-DBQDbTaJ.js} +1 -1
  193. package/ui-dist/assets/diagram-WEI45ONY-DBQDbTaJ.js.gz +0 -0
  194. package/ui-dist/assets/{doc-browser-Cu58uiEg.js → doc-browser-BJrre2S_.js} +1 -1
  195. package/ui-dist/assets/doc-browser-BJrre2S_.js.gz +0 -0
  196. package/ui-dist/assets/doc-browser-BPqA-zQx.js +1 -0
  197. package/ui-dist/assets/{doc-browser-context-CekJxJFm.js → doc-browser-context-TILuCY5c.js} +1 -1
  198. package/ui-dist/assets/doc-browser-context-TILuCY5c.js.gz +0 -0
  199. package/ui-dist/assets/{docx-preview-ByCKKIVT.js → docx-preview-B4-aDfvO.js} +1 -1
  200. package/ui-dist/assets/docx-preview-B4-aDfvO.js.gz +0 -0
  201. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-DWjfeEie.js → ebnfDiagram-CCIWWBDH-CfDNIXFN.js} +1 -1
  202. package/ui-dist/assets/ebnfDiagram-CCIWWBDH-CfDNIXFN.js.gz +0 -0
  203. package/ui-dist/assets/{erDiagram-Q63AITRT-DR7vWYHM.js → erDiagram-Q63AITRT-D95rFXMM.js} +1 -1
  204. package/ui-dist/assets/erDiagram-Q63AITRT-D95rFXMM.js.gz +0 -0
  205. package/ui-dist/assets/eventmodeling-45OFAUF4-BzkLWWdP.js +1 -0
  206. package/ui-dist/assets/{extensions-B5r-0jCq.js → extensions-CVUFK6Jj.js} +1 -1
  207. package/ui-dist/assets/extensions-CVUFK6Jj.js.gz +0 -0
  208. package/ui-dist/assets/flowDiagram-23GEKE2U-ukkCsB0j.js +1 -0
  209. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-E3l9tuaL.js → ganttDiagram-NO4QXBWP-Bawg0P0r.js} +1 -1
  210. package/ui-dist/assets/ganttDiagram-NO4QXBWP-Bawg0P0r.js.gz +0 -0
  211. package/ui-dist/assets/gitGraph-TEB2WS4Q-BYFhT0Q5.js +1 -0
  212. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-DiMvbHKf.js → gitGraphDiagram-IHSO6WYX-BbKh9nbL.js} +1 -1
  213. package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-BbKh9nbL.js.gz +0 -0
  214. package/ui-dist/assets/{i18n-CPjq_hQX.js → i18n-20rSH40D.js} +2 -2
  215. package/ui-dist/assets/i18n-20rSH40D.js.gz +0 -0
  216. package/ui-dist/assets/{i18n-provider-BYO9AhFy.js → i18n-provider-BPRq6S7O.js} +1 -1
  217. package/ui-dist/assets/info-DKCQHKI2-CTmlJdcH.js +1 -0
  218. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-BZDL0NDJ.js → infoDiagram-FWYZ7A6U-DPffZXYh.js} +1 -1
  219. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-BZ9WvJb2.js → ishikawaDiagram-FXEZZL3T-CBMsLwZ2.js} +1 -1
  220. package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-CBMsLwZ2.js.gz +0 -0
  221. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-C3TZvKM8.js → journeyDiagram-5HDEW3XC-Mz5U4OzU.js} +1 -1
  222. package/ui-dist/assets/journeyDiagram-5HDEW3XC-Mz5U4OzU.js.gz +0 -0
  223. package/ui-dist/assets/{kanban-definition-HUTT4EX6-9FqauDEi.js → kanban-definition-HUTT4EX6-FXZq2k19.js} +1 -1
  224. package/ui-dist/assets/kanban-definition-HUTT4EX6-FXZq2k19.js.gz +0 -0
  225. package/ui-dist/assets/{katex-J8JuvgNl.js → katex-B26hhTOT.js} +15 -15
  226. package/ui-dist/assets/katex-B26hhTOT.js.gz +0 -0
  227. package/ui-dist/assets/katex-DbZC06Q5.js +1 -0
  228. package/ui-dist/assets/{keyboard-shortcuts-settings-page-1efEkGwq.js → keyboard-shortcuts-settings-page-CkQbSKwI.js} +1 -1
  229. package/ui-dist/assets/{line-Ca49mj80.js → line-BZwCgT9K.js} +1 -1
  230. package/ui-dist/assets/{linear-DlCeG66S.js → linear-CTe9mKUw.js} +1 -1
  231. package/ui-dist/assets/linear-CTe9mKUw.js.gz +0 -0
  232. package/ui-dist/assets/login-page-Dlyvp-81.js +1 -0
  233. package/ui-dist/assets/{login-page-DBqkVTVD.js → login-page-f8qQ4xKY.js} +1 -1
  234. package/ui-dist/assets/login-page-f8qQ4xKY.js.gz +0 -0
  235. package/ui-dist/assets/main-D2dWy8fM.css +1 -0
  236. package/ui-dist/assets/main-D2dWy8fM.css.gz +0 -0
  237. package/ui-dist/assets/main-i18n-catalog.config-DZ-5ollN.js +1 -0
  238. package/ui-dist/assets/main-i18n-catalog.config-DZ-5ollN.js.gz +0 -0
  239. package/ui-dist/assets/{main-CQ6GUYdX.js → main-ky5Efhq1.js} +2 -2
  240. package/ui-dist/assets/main-ky5Efhq1.js.gz +0 -0
  241. package/ui-dist/assets/{map-WMnNq9UV.js → map-Ci48ZwAp.js} +1 -1
  242. package/ui-dist/assets/map-Ci48ZwAp.js.gz +0 -0
  243. package/ui-dist/assets/{mcp-marketplace-page-CWAxBNaS.js → mcp-marketplace-page-FfIfEo6w.js} +1 -1
  244. package/ui-dist/assets/mcp-marketplace-page-FfIfEo6w.js.gz +0 -0
  245. package/ui-dist/assets/mcp-marketplace-page-sH7VptN_.js +1 -0
  246. package/ui-dist/assets/{mermaid-parser.core-B8xk4hpS.js → mermaid-parser.core-CzPD3U_z.js} +2 -2
  247. package/ui-dist/assets/mermaid-parser.core-CzPD3U_z.js.gz +0 -0
  248. package/ui-dist/assets/{mermaid.core-CFPiczKH.js → mermaid.core-geIMNPbV.js} +3 -3
  249. package/ui-dist/assets/mermaid.core-geIMNPbV.js.gz +0 -0
  250. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-CnxA52L6.js → mindmap-definition-LN4V7U3C-xqlKxsr_.js} +1 -1
  251. package/ui-dist/assets/mindmap-definition-LN4V7U3C-xqlKxsr_.js.gz +0 -0
  252. package/ui-dist/assets/{model-config-page-DBcuZyRC.js → model-config-page-Bcm6-pCX.js} +1 -1
  253. package/ui-dist/assets/model-config-page-Bcm6-pCX.js.gz +0 -0
  254. package/ui-dist/assets/{ordinal-PgiFlfBJ.js → ordinal-MxnX8yhv.js} +1 -1
  255. package/ui-dist/assets/ordinal-MxnX8yhv.js.gz +0 -0
  256. package/ui-dist/assets/packet-7NZHBO7P-BbrI0ZlN.js +1 -0
  257. package/ui-dist/assets/panel-app-i18n-catalog.config-p3qAY_Eq.js +1 -0
  258. package/ui-dist/assets/{panelStandalone-BGA1s7JG.js → panelStandalone-By-6dDXS.js} +2 -2
  259. package/ui-dist/assets/panelStandalone-By-6dDXS.js.gz +0 -0
  260. package/ui-dist/assets/{pegDiagram-2B236MQR-A8oz7dTH.js → pegDiagram-2B236MQR-D50MFTN1.js} +1 -1
  261. package/ui-dist/assets/pegDiagram-2B236MQR-D50MFTN1.js.gz +0 -0
  262. package/ui-dist/assets/pie-RZYD4A2V-B7zE1ZIr.js +1 -0
  263. package/ui-dist/assets/{pieDiagram-ENE6RG2P-mtBnkYY0.js → pieDiagram-ENE6RG2P-CpA13oiC.js} +1 -1
  264. package/ui-dist/assets/pieDiagram-ENE6RG2P-CpA13oiC.js.gz +0 -0
  265. package/ui-dist/assets/{privacy-settings-page-DVC-aq1v.js → privacy-settings-page-B1sHLAc1.js} +1 -1
  266. package/ui-dist/assets/privacy-settings-page-B1sHLAc1.js.gz +0 -0
  267. package/ui-dist/assets/{projects-Cq0E3c7N.js → projects-O3GTERwP.js} +1 -1
  268. package/ui-dist/assets/projects-O3GTERwP.js.gz +0 -0
  269. package/ui-dist/assets/{provider-scoped-model-input-BGdZMWWa.js → provider-scoped-model-input-BQsugx1v.js} +1 -1
  270. package/ui-dist/assets/provider-scoped-model-input-BQsugx1v.js.gz +0 -0
  271. package/ui-dist/assets/{providers-config-page-B-IhHl6x.js → providers-config-page-BDEdHJbw.js} +1 -1
  272. package/ui-dist/assets/providers-config-page-BDEdHJbw.js.gz +0 -0
  273. package/ui-dist/assets/{pwa-C3kR9mdy.js → pwa-D_nZUwG0.js} +1 -1
  274. package/ui-dist/assets/pwa-D_nZUwG0.js.gz +0 -0
  275. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-DE1VybGO.js → quadrantDiagram-ABIIQ3AL-CYCgaj4l.js} +1 -1
  276. package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-CYCgaj4l.js.gz +0 -0
  277. package/ui-dist/assets/radar-I7S5WNFK-1X_q11Ed.js +1 -0
  278. package/ui-dist/assets/railroad-3IZDKUUU-CIXnuFyE.js +1 -0
  279. package/ui-dist/assets/railroad-abnf-AHOZXSZD-D6ImKl2r.js +1 -0
  280. package/ui-dist/assets/railroad-ebnf-EBAXGLYW-2j9d3twU.js +1 -0
  281. package/ui-dist/assets/railroad-peg-LSFZ7HO6-DMVaJGbm.js +1 -0
  282. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-u9EMg14B.js → railroadDiagram-RFXS5EU6-4LKDGlXN.js} +1 -1
  283. package/ui-dist/assets/railroadDiagram-RFXS5EU6-4LKDGlXN.js.gz +0 -0
  284. package/ui-dist/assets/remote-CFWp4wyH.js +1 -0
  285. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-BAWHAqEi.js → requirementDiagram-TGXJPOKE-CxNOU0JH.js} +1 -1
  286. package/ui-dist/assets/requirementDiagram-TGXJPOKE-CxNOU0JH.js.gz +0 -0
  287. package/ui-dist/assets/{runtime-config-page-LmrB2q65.js → runtime-config-page-BHTKwgDi.js} +1 -1
  288. package/ui-dist/assets/runtime-config-page-BHTKwgDi.js.gz +0 -0
  289. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-aDy-jdwF.js → sankeyDiagram-HTMAVEWB-DbCBDe2S.js} +1 -1
  290. package/ui-dist/assets/sankeyDiagram-HTMAVEWB-DbCBDe2S.js.gz +0 -0
  291. package/ui-dist/assets/{search-config-page-BIXmv5FY.js → search-config-page-DWKlMHgH.js} +1 -1
  292. package/ui-dist/assets/search-config-page-DWKlMHgH.js.gz +0 -0
  293. package/ui-dist/assets/{secrets-config-page-DU3fadrq.js → secrets-config-page-DiQL088Y.js} +1 -1
  294. package/ui-dist/assets/secrets-config-page-DiQL088Y.js.gz +0 -0
  295. package/ui-dist/assets/security-config-DmTDKKY4.js +1 -0
  296. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-DwHC4mbX.js → sequenceDiagram-DBY2YBRQ-DA6W2BS_.js} +1 -1
  297. package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-DA6W2BS_.js.gz +0 -0
  298. package/ui-dist/assets/{service-apps-panel-Bshf3Wmq.js → service-apps-panel-CEnyYsQp.js} +1 -1
  299. package/ui-dist/assets/service-apps-panel-CEnyYsQp.js.gz +0 -0
  300. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-oOMY0Fag.js → sizeCapture-X5ZJPWSS-T_q_d_VW.js} +1 -1
  301. package/ui-dist/assets/{src-CLPoo5iL.js → src-CYpUlx-4.js} +1 -1
  302. package/ui-dist/assets/{src-CLPoo5iL.js.gz → src-CYpUlx-4.js.gz} +0 -0
  303. package/ui-dist/assets/{stateDiagram-2N3HPSRC-B0Epk-VR.js → stateDiagram-2N3HPSRC-mi8z2G0a.js} +1 -1
  304. package/ui-dist/assets/stateDiagram-2N3HPSRC-mi8z2G0a.js.gz +0 -0
  305. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-OlIMT57r.js +1 -0
  306. package/ui-dist/assets/{swimlanes-5IMT3BWC-T0w-Iuzf.js → swimlanes-5IMT3BWC-DkBEhWE4.js} +2 -2
  307. package/ui-dist/assets/swimlanes-5IMT3BWC-DkBEhWE4.js.gz +0 -0
  308. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-sLThrh07.js +8 -0
  309. package/ui-dist/assets/{tag-chip-gAH1IOsZ.js → tag-chip-B1AYPOKL.js} +1 -1
  310. package/ui-dist/assets/{theme-provider-DE7m9jvf.js → theme-provider-DzvAi3pe.js} +1 -1
  311. package/ui-dist/assets/theme-provider-DzvAi3pe.js.gz +0 -0
  312. package/ui-dist/assets/{timeline-definition-FHXFAJF6-BEonB5Np.js → timeline-definition-FHXFAJF6-BoFmqBw1.js} +1 -1
  313. package/ui-dist/assets/timeline-definition-FHXFAJF6-BoFmqBw1.js.gz +0 -0
  314. package/ui-dist/assets/treeView-QDETBFTQ-CCFyazDE.js +1 -0
  315. package/ui-dist/assets/treemap-6X3UGDF4-D6wvq1Hz.js +1 -0
  316. package/ui-dist/assets/{use-config-Cyiw06-j.js → use-config-BEdbtpD4.js} +1 -1
  317. package/ui-dist/assets/use-config-BEdbtpD4.js.gz +0 -0
  318. package/ui-dist/assets/{use-desktop-capabilities-OKG96v4y.js → use-desktop-capabilities-BkuRd2cY.js} +1 -1
  319. package/ui-dist/assets/use-desktop-capabilities-BkuRd2cY.js.gz +0 -0
  320. package/ui-dist/assets/{vennDiagram-L72KCM5P-BDvcOCo2.js → vennDiagram-L72KCM5P-BlZ3Or5U.js} +1 -1
  321. package/ui-dist/assets/vennDiagram-L72KCM5P-BlZ3Or5U.js.gz +0 -0
  322. package/ui-dist/assets/wardley-OPB4EBWU-BRzaRyFf.js +1 -0
  323. package/ui-dist/assets/{wardleyDiagram-EHGQE667-jMLMgjzE.js → wardleyDiagram-EHGQE667-yDfr33i3.js} +1 -1
  324. package/ui-dist/assets/wardleyDiagram-EHGQE667-yDfr33i3.js.gz +0 -0
  325. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-pzrpclEv.js → xychartDiagram-FW5EYKEG-mIXwIGAQ.js} +1 -1
  326. package/ui-dist/assets/xychartDiagram-FW5EYKEG-mIXwIGAQ.js.gz +0 -0
  327. package/ui-dist/index.html +24 -23
  328. package/ui-dist/index.html.gz +0 -0
  329. package/ui-dist/panel-standalone.html +6 -6
  330. package/ui-dist/panel-standalone.html.gz +0 -0
  331. package/dist/nextclaw-cli-app-CjtgVEdo.js.map +0 -1
  332. package/ui-dist/assets/abnfDiagram-VRR7QNED-Kzlh3ZEC.js.gz +0 -0
  333. package/ui-dist/assets/account-panel-UvHFa8Kl.js.gz +0 -0
  334. package/ui-dist/assets/aiden0z-pptx-renderer.es-k1xZLzeo.js.gz +0 -0
  335. package/ui-dist/assets/api-Dffeij78.js.gz +0 -0
  336. package/ui-dist/assets/app-data-DzaIMy4D.js.gz +0 -0
  337. package/ui-dist/assets/app-presenter-provider-D3BuuOyZ.css +0 -1
  338. package/ui-dist/assets/app-presenter-provider-D3BuuOyZ.css.gz +0 -0
  339. package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js +0 -109
  340. package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js.gz +0 -0
  341. package/ui-dist/assets/appearance-settings-page-D8cWniw-.js.gz +0 -0
  342. package/ui-dist/assets/arc-CpivM836.js.gz +0 -0
  343. package/ui-dist/assets/architecture-TIHT7OUA-CVRF_cYQ.js +0 -1
  344. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-ifjW1qjI.js.gz +0 -0
  345. package/ui-dist/assets/c4Diagram-LMCZKHZV-CpapRftp.js.gz +0 -0
  346. package/ui-dist/assets/channel-CBrWRr4N.js +0 -1
  347. package/ui-dist/assets/channels-list-page-B_fYP1Pn.js.gz +0 -0
  348. package/ui-dist/assets/chunk-2Q5K7J3B-B8mmRk7d.js +0 -1
  349. package/ui-dist/assets/chunk-32BRIVSS-BKBwdmKR.js.gz +0 -0
  350. package/ui-dist/assets/chunk-52WLFC77-BgZRCpDx.js.gz +0 -0
  351. package/ui-dist/assets/chunk-5JV3BV7I-B7QYgZU5.js.gz +0 -0
  352. package/ui-dist/assets/chunk-5TONJI2A-DjyQwgL2.js.gz +0 -0
  353. package/ui-dist/assets/chunk-7BUUIJ7U-D6bq2PKF.js.gz +0 -0
  354. package/ui-dist/assets/chunk-C7G6YPKG-8z3B6RUH.js.gz +0 -0
  355. package/ui-dist/assets/chunk-EX3LRPZG-BChuEPvO.js.gz +0 -0
  356. package/ui-dist/assets/chunk-FWX5IMBZ-fBFt0u3f.js.gz +0 -0
  357. package/ui-dist/assets/chunk-HOUHSVGY-MD0SpW5A.js.gz +0 -0
  358. package/ui-dist/assets/chunk-ICXQ74PX-DvCcw_hz.js.gz +0 -0
  359. package/ui-dist/assets/chunk-JG7HCLWE-B8zqBnU9.js.gz +0 -0
  360. package/ui-dist/assets/chunk-MOJQB5TN-gXbfqoqq.js.gz +0 -0
  361. package/ui-dist/assets/chunk-PUDLZKDR-DPILgOVY.js.gz +0 -0
  362. package/ui-dist/assets/chunk-Q4XR5HBZ-C0JJx7lW.js.gz +0 -0
  363. package/ui-dist/assets/chunk-R7FJI6CG-Bb8n616-.js.gz +0 -0
  364. package/ui-dist/assets/chunk-RYQCIY6F-1HOsOrSl.js.gz +0 -0
  365. package/ui-dist/assets/chunk-U6XO7XAA-BAFDVb1v.js.gz +0 -0
  366. package/ui-dist/assets/chunk-V7JOEXUC-8-g68lu5.js.gz +0 -0
  367. package/ui-dist/assets/chunk-VAUOI2AC-Cpml0inz.js +0 -1
  368. package/ui-dist/assets/chunk-WYO6CB5R-6wjFTXNP.js.gz +0 -0
  369. package/ui-dist/assets/chunk-XXDRQBXY-nCiqnCpF.js +0 -1
  370. package/ui-dist/assets/chunk-ZGVPDNZ5-BRTmSAhp.js.gz +0 -0
  371. package/ui-dist/assets/chunk-ZIRB5QZD-CH_1eoSV.js.gz +0 -0
  372. package/ui-dist/assets/classDiagram-OUVF2IWQ-C-DRqAaW.js +0 -1
  373. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-DXCcZ42U.js +0 -1
  374. package/ui-dist/assets/config-split-page-6hHiiapl.js.gz +0 -0
  375. package/ui-dist/assets/confirm-dialog-ClT6iaj8.js.gz +0 -0
  376. package/ui-dist/assets/cose-bilkent-JH36ORCC-L7w_qScX.js.gz +0 -0
  377. package/ui-dist/assets/cynefin-VYW2F7L2-2SOTgxxC.js +0 -1
  378. package/ui-dist/assets/cynefinDiagram-TSTJHNR4-Bay7uDSR.js.gz +0 -0
  379. package/ui-dist/assets/dagre-CJ_hX8xv.js.gz +0 -0
  380. package/ui-dist/assets/dagre-VKFMJZFB-DDhk-2B3.js.gz +0 -0
  381. package/ui-dist/assets/desktop-capabilities-page-CB5pniTx.js.gz +0 -0
  382. package/ui-dist/assets/desktop-update-config-OuQV73gg.js.gz +0 -0
  383. package/ui-dist/assets/diagram-FQU43EPY-somFq5y8.js.gz +0 -0
  384. package/ui-dist/assets/diagram-G47NLZAW-hzgyQsPd.js.gz +0 -0
  385. package/ui-dist/assets/diagram-NH7WQ7WH-BkJ4gEQJ.js.gz +0 -0
  386. package/ui-dist/assets/diagram-OA4YK3LP-CS3ZkK4w.js.gz +0 -0
  387. package/ui-dist/assets/diagram-WEI45ONY-BApo-JHS.js.gz +0 -0
  388. package/ui-dist/assets/doc-browser-BFkslEzY.js +0 -1
  389. package/ui-dist/assets/doc-browser-Cu58uiEg.js.gz +0 -0
  390. package/ui-dist/assets/doc-browser-context-CekJxJFm.js.gz +0 -0
  391. package/ui-dist/assets/docx-preview-ByCKKIVT.js.gz +0 -0
  392. package/ui-dist/assets/ebnfDiagram-CCIWWBDH-DWjfeEie.js.gz +0 -0
  393. package/ui-dist/assets/erDiagram-Q63AITRT-DR7vWYHM.js.gz +0 -0
  394. package/ui-dist/assets/eventmodeling-45OFAUF4-CXZNG56U.js +0 -1
  395. package/ui-dist/assets/extensions-B5r-0jCq.js.gz +0 -0
  396. package/ui-dist/assets/flowDiagram-23GEKE2U-2065oyKr.js +0 -1
  397. package/ui-dist/assets/ganttDiagram-NO4QXBWP-E3l9tuaL.js.gz +0 -0
  398. package/ui-dist/assets/gitGraph-TEB2WS4Q-B0Ln3ZuK.js +0 -1
  399. package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-DiMvbHKf.js.gz +0 -0
  400. package/ui-dist/assets/i18n-CPjq_hQX.js.gz +0 -0
  401. package/ui-dist/assets/info-DKCQHKI2-B06uqGM4.js +0 -1
  402. package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-BZ9WvJb2.js.gz +0 -0
  403. package/ui-dist/assets/journeyDiagram-5HDEW3XC-C3TZvKM8.js.gz +0 -0
  404. package/ui-dist/assets/kanban-definition-HUTT4EX6-9FqauDEi.js.gz +0 -0
  405. package/ui-dist/assets/katex-J8JuvgNl.js.gz +0 -0
  406. package/ui-dist/assets/linear-DlCeG66S.js.gz +0 -0
  407. package/ui-dist/assets/login-page-DBqkVTVD.js.gz +0 -0
  408. package/ui-dist/assets/login-page-DjcRQLQe.js +0 -1
  409. package/ui-dist/assets/main-CLwCjK9U.css +0 -1
  410. package/ui-dist/assets/main-CLwCjK9U.css.gz +0 -0
  411. package/ui-dist/assets/main-CQ6GUYdX.js.gz +0 -0
  412. package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js +0 -1
  413. package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js.gz +0 -0
  414. package/ui-dist/assets/map-WMnNq9UV.js.gz +0 -0
  415. package/ui-dist/assets/mcp-marketplace-page-CWAxBNaS.js.gz +0 -0
  416. package/ui-dist/assets/mcp-marketplace-page-Ct090ceA.js +0 -1
  417. package/ui-dist/assets/mermaid-parser.core-B8xk4hpS.js.gz +0 -0
  418. package/ui-dist/assets/mermaid.core-CFPiczKH.js.gz +0 -0
  419. package/ui-dist/assets/mindmap-definition-LN4V7U3C-CnxA52L6.js.gz +0 -0
  420. package/ui-dist/assets/model-config-page-DBcuZyRC.js.gz +0 -0
  421. package/ui-dist/assets/ordinal-PgiFlfBJ.js.gz +0 -0
  422. package/ui-dist/assets/packet-7NZHBO7P-CHx-igbz.js +0 -1
  423. package/ui-dist/assets/panel-app-i18n-catalog.config-CQFujXqt.js +0 -1
  424. package/ui-dist/assets/panelStandalone-BGA1s7JG.js.gz +0 -0
  425. package/ui-dist/assets/pegDiagram-2B236MQR-A8oz7dTH.js.gz +0 -0
  426. package/ui-dist/assets/pie-RZYD4A2V-DOaMc-x9.js +0 -1
  427. package/ui-dist/assets/pieDiagram-ENE6RG2P-mtBnkYY0.js.gz +0 -0
  428. package/ui-dist/assets/privacy-settings-page-DVC-aq1v.js.gz +0 -0
  429. package/ui-dist/assets/projects-Cq0E3c7N.js.gz +0 -0
  430. package/ui-dist/assets/provider-scoped-model-input-BGdZMWWa.js.gz +0 -0
  431. package/ui-dist/assets/providers-config-page-B-IhHl6x.js.gz +0 -0
  432. package/ui-dist/assets/pwa-C3kR9mdy.js.gz +0 -0
  433. package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-DE1VybGO.js.gz +0 -0
  434. package/ui-dist/assets/radar-I7S5WNFK-CXsdndDk.js +0 -1
  435. package/ui-dist/assets/railroad-3IZDKUUU-DxgXdrYP.js +0 -1
  436. package/ui-dist/assets/railroad-abnf-AHOZXSZD-CR1tnyjz.js +0 -1
  437. package/ui-dist/assets/railroad-ebnf-EBAXGLYW-CjjxZR2U.js +0 -1
  438. package/ui-dist/assets/railroad-peg-LSFZ7HO6-DgVGJCHN.js +0 -1
  439. package/ui-dist/assets/railroadDiagram-RFXS5EU6-u9EMg14B.js.gz +0 -0
  440. package/ui-dist/assets/remote-Cnawibbg.js +0 -1
  441. package/ui-dist/assets/requirementDiagram-TGXJPOKE-BAWHAqEi.js.gz +0 -0
  442. package/ui-dist/assets/runtime-config-page-LmrB2q65.js.gz +0 -0
  443. package/ui-dist/assets/sankeyDiagram-HTMAVEWB-aDy-jdwF.js.gz +0 -0
  444. package/ui-dist/assets/search-config-page-BIXmv5FY.js.gz +0 -0
  445. package/ui-dist/assets/secrets-config-page-DU3fadrq.js.gz +0 -0
  446. package/ui-dist/assets/security-config-9s0i0I4N.js +0 -1
  447. package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-DwHC4mbX.js.gz +0 -0
  448. package/ui-dist/assets/service-apps-panel-Bshf3Wmq.js.gz +0 -0
  449. package/ui-dist/assets/stateDiagram-2N3HPSRC-B0Epk-VR.js.gz +0 -0
  450. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-Ct4zTw8P.js +0 -1
  451. package/ui-dist/assets/swimlanes-5IMT3BWC-T0w-Iuzf.js.gz +0 -0
  452. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CdmN0PBd.js +0 -8
  453. package/ui-dist/assets/theme-provider-DE7m9jvf.js.gz +0 -0
  454. package/ui-dist/assets/timeline-definition-FHXFAJF6-BEonB5Np.js.gz +0 -0
  455. package/ui-dist/assets/treeView-QDETBFTQ-Dad4_Wc7.js +0 -1
  456. package/ui-dist/assets/treemap-6X3UGDF4-9_GWWZsY.js +0 -1
  457. package/ui-dist/assets/use-config-Cyiw06-j.js.gz +0 -0
  458. package/ui-dist/assets/use-desktop-capabilities-OKG96v4y.js.gz +0 -0
  459. package/ui-dist/assets/vennDiagram-L72KCM5P-BDvcOCo2.js.gz +0 -0
  460. package/ui-dist/assets/wardley-OPB4EBWU-BXpvyee9.js +0 -1
  461. package/ui-dist/assets/wardleyDiagram-EHGQE667-jMLMgjzE.js.gz +0 -0
  462. package/ui-dist/assets/xychartDiagram-FW5EYKEG-pzrpclEv.js.gz +0 -0
  463. /package/ui-dist/assets/{array-BHDgItFN.js → array-D0DyKZdT.js} +0 -0
  464. /package/ui-dist/assets/{card-CS8su2Zh.js → card-BhfAZv5L.js} +0 -0
  465. /package/ui-dist/assets/{card-CS8su2Zh.js.gz → card-BhfAZv5L.js.gz} +0 -0
  466. /package/ui-dist/assets/{chunk-KEIR6QF5-DstBw0Hk.js → chunk-KEIR6QF5-CuZFOa6q.js} +0 -0
  467. /package/ui-dist/assets/{chunk-KEIR6QF5-DstBw0Hk.js.gz → chunk-KEIR6QF5-CuZFOa6q.js.gz} +0 -0
  468. /package/ui-dist/assets/{chunk-Y2CYZVJY-CA3ymQuH.js → chunk-Y2CYZVJY-Frut-1TF.js} +0 -0
  469. /package/ui-dist/assets/{config-hints-CBPHrfYk.js → config-hints-B_C9DAp5.js} +0 -0
  470. /package/ui-dist/assets/{cytoscape.esm-C7xr90o_.js → cytoscape.esm-BibuhnZD.js} +0 -0
  471. /package/ui-dist/assets/{cytoscape.esm-C7xr90o_.js.gz → cytoscape.esm-BibuhnZD.js.gz} +0 -0
  472. /package/ui-dist/assets/{defaultLocale-BG1oDVag.js → defaultLocale-q7sRUXPc.js} +0 -0
  473. /package/ui-dist/assets/{defaultLocale-BG1oDVag.js.gz → defaultLocale-q7sRUXPc.js.gz} +0 -0
  474. /package/ui-dist/assets/{dist-Cnhwure9.js → dist-DhMddrrH.js} +0 -0
  475. /package/ui-dist/assets/{dist-Cnhwure9.js.gz → dist-DhMddrrH.js.gz} +0 -0
  476. /package/ui-dist/assets/{form-actions-AIdXOoCL.js → form-actions-BRESe-m_.js} +0 -0
  477. /package/ui-dist/assets/{graphlib-CNMGfuTb.js → graphlib-BM63WsW3.js} +0 -0
  478. /package/ui-dist/assets/{graphlib-CNMGfuTb.js.gz → graphlib-BM63WsW3.js.gz} +0 -0
  479. /package/ui-dist/assets/{init-wQIZuRSH.js → init-CRMkf9sL.js} +0 -0
  480. /package/ui-dist/assets/{jszip.min-D_AtKL_8.js → jszip.min-6thm2J_a.js} +0 -0
  481. /package/ui-dist/assets/{jszip.min-D_AtKL_8.js.gz → jszip.min-6thm2J_a.js.gz} +0 -0
  482. /package/ui-dist/assets/{panel-app-maumVhbl.js → panel-app-B39rJPj8.js} +0 -0
  483. /package/ui-dist/assets/{panel-app-maumVhbl.js.gz → panel-app-B39rJPj8.js.gz} +0 -0
  484. /package/ui-dist/assets/{path-N-C4MRP0.js → path-BFMmafCM.js} +0 -0
  485. /package/ui-dist/assets/{path-N-C4MRP0.js.gz → path-BFMmafCM.js.gz} +0 -0
  486. /package/ui-dist/assets/{provider-models-5PGHb6mP.js → provider-models-hrHMcHqg.js} +0 -0
  487. /package/ui-dist/assets/{provider-models-5PGHb6mP.js.gz → provider-models-hrHMcHqg.js.gz} +0 -0
  488. /package/ui-dist/assets/{rough.esm-BeWA068d.js → rough.esm-5Tjchx1D.js} +0 -0
  489. /package/ui-dist/assets/{rough.esm-BeWA068d.js.gz → rough.esm-5Tjchx1D.js.gz} +0 -0
  490. /package/ui-dist/assets/{skeleton-BL9h32W7.js → skeleton-Drvn83YW.js} +0 -0
  491. /package/ui-dist/assets/{use-panel-app-scroll-restoration-DsV1IJx-.js → use-panel-app-scroll-restoration-ZnicIfo3.js} +0 -0
  492. /package/ui-dist/assets/{use-panel-app-scroll-restoration-DsV1IJx-.js.gz → use-panel-app-scroll-restoration-ZnicIfo3.js.gz} +0 -0
  493. /package/ui-dist/assets/{xlsx-CwUXNtD3.js → xlsx-BC8ibjXK.js} +0 -0
  494. /package/ui-dist/assets/{xlsx-CwUXNtD3.js.gz → xlsx-BC8ibjXK.js.gz} +0 -0
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # nextclaw
2
2
 
3
- Turn your computer into a powerful AI assistant that coordinates agents, skills, CLI tools, automations, and messaging apps.
3
+ NextClaw aims to be your proactive, continuously improving, long-term AI partner. Today, it brings conversations, agents, skills, CLI tools, automations, and messaging apps together to help you discuss questions and complete work.
4
+
5
+ The [1.0 roadmap](https://docs.nextclaw.io/en/project/roadmap) covers user understanding, proactive analysis and conversation, self-improvement, and reliable long-term use. These are planned outcomes; full acceptance testing is not complete, and no release date is set.
4
6
 
5
7
  ## Install
6
8
 
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { n as repairPackagedPortableRunnerPermissions, t as createNextclawDistribution } from "../../distribution-CND3AWXk.js";
2
+ import { n as repairPackagedPortableRunnerPermissions, t as createNextclawDistribution } from "../../distribution-kH-YiPGh.js";
3
3
  import { NextclawDistributionService } from "@nextclaw/service";
4
4
  //#region src/cli/app/index.ts
5
5
  const distribution = createNextclawDistribution(import.meta.url);
6
6
  repairPackagedPortableRunnerPermissions(distribution);
7
7
  NextclawDistributionService.configureRuntime(distribution);
8
- const { nextclawCliProgram } = await import("../../nextclaw-cli-app-CjtgVEdo.js");
8
+ const { nextclawCliProgram } = await import("../../nextclaw-cli-app-Mz2hYz_-.js");
9
9
  await nextclawCliProgram.parseAsync(process.argv);
10
10
  //#endregion
11
11
  export {};
@@ -6,7 +6,7 @@ if (!(nodeMajor >= 24 || nodeMajor === 22 && nodeMinor >= 12 || nodeMajor === 20
6
6
  `);
7
7
  process.exitCode = 1;
8
8
  } else {
9
- const [{ NextclawDistributionService, runNextclawNpmRuntimeLauncher }, { createNextclawDistribution }] = await Promise.all([import("@nextclaw/service"), import("../../distribution-BAU3XUQJ.js")]);
9
+ const [{ NextclawDistributionService, runNextclawNpmRuntimeLauncher }, { createNextclawDistribution }] = await Promise.all([import("@nextclaw/service"), import("../../distribution-DzRLAMTC.js")]);
10
10
  NextclawDistributionService.configure(createNextclawDistribution(import.meta.url));
11
11
  await runNextclawNpmRuntimeLauncher(process.argv);
12
12
  }
@@ -1,2 +1,2 @@
1
- import { n as repairPackagedPortableRunnerPermissions, t as createNextclawDistribution } from "./distribution-CND3AWXk.js";
1
+ import { n as repairPackagedPortableRunnerPermissions, t as createNextclawDistribution } from "./distribution-kH-YiPGh.js";
2
2
  export { createNextclawDistribution, repairPackagedPortableRunnerPermissions };
@@ -41,4 +41,4 @@ function repairPackagedPortableRunnerPermissions(distribution) {
41
41
  //#endregion
42
42
  export { repairPackagedPortableRunnerPermissions as n, createNextclawDistribution as t };
43
43
 
44
- //# sourceMappingURL=distribution-CND3AWXk.js.map
44
+ //# sourceMappingURL=distribution-kH-YiPGh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"distribution-CND3AWXk.js","names":[],"sources":["../src/cli/shared/lib/distribution/nextclaw-distribution.utils.ts"],"sourcesContent":["import { accessSync, chmodSync, constants, existsSync, readFileSync, statSync } from \"node:fs\";\nimport { basename, dirname, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { NextclawDistribution } from \"@nextclaw/service\";\n\nexport function createNextclawDistribution(importMetaUrl: string): NextclawDistribution {\n const entrypoint = fileURLToPath(importMetaUrl);\n const packageRoot = resolve(dirname(entrypoint), \"../../..\");\n const { version } = JSON.parse(readFileSync(resolve(packageRoot, \"package.json\"), \"utf-8\")) as { version?: string };\n const portableRunnerExecutable = process.platform === \"win32\"\n ? \"nextclaw-wasmtime-runner.exe\"\n : \"nextclaw-wasmtime-runner\";\n return {\n version: typeof version === \"string\" ? version : \"0.0.0\",\n productEnvironment: \"development\",\n releaseChannel: \"development\",\n appEntrypoint: resolve(packageRoot, \"dist/cli/app/index.js\"),\n launcherVersion: typeof version === \"string\" ? version : \"0.0.0\",\n launcherEntrypoint: resolve(dirname(entrypoint), \"../launcher\", basename(entrypoint)),\n launchedByLauncher: false,\n templatesDir: resolve(packageRoot, \"templates\"),\n uiDistDir: resolve(packageRoot, \"ui-dist\"),\n runtimeUpdatePublicKeyPath: resolve(packageRoot, \"resources/update-bundle-public.pem\"),\n builtInAppsDirectory: resolve(packageRoot, \"resources/apps\"),\n portableServiceRunnerPath: resolve(\n packageRoot,\n \"resources/native\",\n `${process.platform}-${process.arch}`,\n portableRunnerExecutable,\n )\n };\n}\n\nexport function repairPackagedPortableRunnerPermissions(distribution: NextclawDistribution): boolean {\n if (process.platform === \"win32\") return false;\n const runnerPath = distribution.portableServiceRunnerPath?.trim();\n if (!runnerPath || !existsSync(runnerPath)) return false;\n const runnerStat = statSync(runnerPath);\n if (!runnerStat.isFile()) return false;\n try {\n accessSync(runnerPath, constants.X_OK);\n return false;\n } catch {\n chmodSync(runnerPath, (runnerStat.mode & 0o777) | 0o111);\n accessSync(runnerPath, constants.X_OK);\n process.stderr.write(`[nextclaw] restored executable permission for bundled Portable Service App runner: ${runnerPath}\\n`);\n return true;\n }\n}\n"],"mappings":";;;;AAKA,SAAgB,2BAA2B,eAA6C;CACtF,MAAM,aAAa,cAAc,cAAc;CAC/C,MAAM,cAAc,QAAQ,QAAQ,WAAW,EAAE,WAAW;CAC5D,MAAM,EAAE,YAAY,KAAK,MAAM,aAAa,QAAQ,aAAa,eAAe,EAAE,QAAQ,CAAC;CAC3F,MAAM,2BAA2B,QAAQ,aAAa,UAClD,iCACA;AACJ,QAAO;EACL,SAAS,OAAO,YAAY,WAAW,UAAU;EACjD,oBAAoB;EACpB,gBAAgB;EAChB,eAAe,QAAQ,aAAa,wBAAwB;EAC5D,iBAAiB,OAAO,YAAY,WAAW,UAAU;EACzD,oBAAoB,QAAQ,QAAQ,WAAW,EAAE,eAAe,SAAS,WAAW,CAAC;EACrF,oBAAoB;EACpB,cAAc,QAAQ,aAAa,YAAY;EAC/C,WAAW,QAAQ,aAAa,UAAU;EAC1C,4BAA4B,QAAQ,aAAa,qCAAqC;EACtF,sBAAsB,QAAQ,aAAa,iBAAiB;EAC5D,2BAA2B,QACzB,aACA,oBACA,GAAG,QAAQ,SAAS,GAAG,QAAQ,QAC/B,yBACD;EACF;;AAGH,SAAgB,wCAAwC,cAA6C;AACnG,KAAI,QAAQ,aAAa,QAAS,QAAO;CACzC,MAAM,aAAa,aAAa,2BAA2B,MAAM;AACjE,KAAI,CAAC,cAAc,CAAC,WAAW,WAAW,CAAE,QAAO;CACnD,MAAM,aAAa,SAAS,WAAW;AACvC,KAAI,CAAC,WAAW,QAAQ,CAAE,QAAO;AACjC,KAAI;AACF,aAAW,YAAY,UAAU,KAAK;AACtC,SAAO;SACD;AACN,YAAU,YAAa,WAAW,OAAO,MAAS,GAAM;AACxD,aAAW,YAAY,UAAU,KAAK;AACtC,UAAQ,OAAO,MAAM,sFAAsF,WAAW,IAAI;AAC1H,SAAO"}
1
+ {"version":3,"file":"distribution-kH-YiPGh.js","names":[],"sources":["../src/cli/shared/lib/distribution/nextclaw-distribution.utils.ts"],"sourcesContent":["import { accessSync, chmodSync, constants, existsSync, readFileSync, statSync } from \"node:fs\";\nimport { basename, dirname, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { NextclawDistribution } from \"@nextclaw/service\";\n\nexport function createNextclawDistribution(importMetaUrl: string): NextclawDistribution {\n const entrypoint = fileURLToPath(importMetaUrl);\n const packageRoot = resolve(dirname(entrypoint), \"../../..\");\n const { version } = JSON.parse(readFileSync(resolve(packageRoot, \"package.json\"), \"utf-8\")) as { version?: string };\n const portableRunnerExecutable = process.platform === \"win32\"\n ? \"nextclaw-wasmtime-runner.exe\"\n : \"nextclaw-wasmtime-runner\";\n return {\n version: typeof version === \"string\" ? version : \"0.0.0\",\n productEnvironment: \"development\",\n releaseChannel: \"development\",\n appEntrypoint: resolve(packageRoot, \"dist/cli/app/index.js\"),\n launcherVersion: typeof version === \"string\" ? version : \"0.0.0\",\n launcherEntrypoint: resolve(dirname(entrypoint), \"../launcher\", basename(entrypoint)),\n launchedByLauncher: false,\n templatesDir: resolve(packageRoot, \"templates\"),\n uiDistDir: resolve(packageRoot, \"ui-dist\"),\n runtimeUpdatePublicKeyPath: resolve(packageRoot, \"resources/update-bundle-public.pem\"),\n builtInAppsDirectory: resolve(packageRoot, \"resources/apps\"),\n portableServiceRunnerPath: resolve(\n packageRoot,\n \"resources/native\",\n `${process.platform}-${process.arch}`,\n portableRunnerExecutable,\n )\n };\n}\n\nexport function repairPackagedPortableRunnerPermissions(distribution: NextclawDistribution): boolean {\n if (process.platform === \"win32\") return false;\n const runnerPath = distribution.portableServiceRunnerPath?.trim();\n if (!runnerPath || !existsSync(runnerPath)) return false;\n const runnerStat = statSync(runnerPath);\n if (!runnerStat.isFile()) return false;\n try {\n accessSync(runnerPath, constants.X_OK);\n return false;\n } catch {\n chmodSync(runnerPath, (runnerStat.mode & 0o777) | 0o111);\n accessSync(runnerPath, constants.X_OK);\n process.stderr.write(`[nextclaw] restored executable permission for bundled Portable Service App runner: ${runnerPath}\\n`);\n return true;\n }\n}\n"],"mappings":";;;;AAKA,SAAgB,2BAA2B,eAA6C;CACtF,MAAM,aAAa,cAAc,cAAc;CAC/C,MAAM,cAAc,QAAQ,QAAQ,WAAW,EAAE,WAAW;CAC5D,MAAM,EAAE,YAAY,KAAK,MAAM,aAAa,QAAQ,aAAa,eAAe,EAAE,QAAQ,CAAC;CAC3F,MAAM,2BAA2B,QAAQ,aAAa,UAClD,iCACA;AACJ,QAAO;EACL,SAAS,OAAO,YAAY,WAAW,UAAU;EACjD,oBAAoB;EACpB,gBAAgB;EAChB,eAAe,QAAQ,aAAa,wBAAwB;EAC5D,iBAAiB,OAAO,YAAY,WAAW,UAAU;EACzD,oBAAoB,QAAQ,QAAQ,WAAW,EAAE,eAAe,SAAS,WAAW,CAAC;EACrF,oBAAoB;EACpB,cAAc,QAAQ,aAAa,YAAY;EAC/C,WAAW,QAAQ,aAAa,UAAU;EAC1C,4BAA4B,QAAQ,aAAa,qCAAqC;EACtF,sBAAsB,QAAQ,aAAa,iBAAiB;EAC5D,2BAA2B,QACzB,aACA,oBACA,GAAG,QAAQ,SAAS,GAAG,QAAQ,QAC/B,yBACD;EACF;;AAGH,SAAgB,wCAAwC,cAA6C;AACnG,KAAI,QAAQ,aAAa,QAAS,QAAO;CACzC,MAAM,aAAa,aAAa,2BAA2B,MAAM;AACjE,KAAI,CAAC,cAAc,CAAC,WAAW,WAAW,CAAE,QAAO;CACnD,MAAM,aAAa,SAAS,WAAW;AACvC,KAAI,CAAC,WAAW,QAAQ,CAAE,QAAO;AACjC,KAAI;AACF,aAAW,YAAY,UAAU,KAAK;AACtC,SAAO;SACD;AACN,YAAU,YAAa,WAAW,OAAO,MAAS,GAAM;AACxD,aAAW,YAAY,UAAU,KAAK;AACtC,UAAQ,OAAO,MAAM,sFAAsF,WAAW,IAAI;AAC1H,SAAO"}
@@ -0,0 +1,85 @@
1
+ import { randomUUID } from "node:crypto";
2
+ //#region src/cli/app/services/feedback/feedback-maintenance-client.service.ts
3
+ function selectFeedback(queue, now = Date.now(), limit = 10) {
4
+ const pending = queue.filter((r) => r.status === "received" && !r.runId);
5
+ const sorted = pending.slice().sort((a, b) => a.priority - b.priority || Number(b.kind !== "unknown") - Number(a.kind !== "unknown") || Number(b.identity === "verified") - Number(a.identity === "verified") || a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id));
6
+ const aged = pending.filter((r) => r.priority > 0 && r.kind !== "unknown" && now - Date.parse(r.createdAt) >= 48 * 36e5).sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
7
+ const selected = sorted.slice(0, limit);
8
+ if (aged && !selected.includes(aged) && selected.length && selected.at(-1).priority > 0) selected[selected.length - 1] = aged;
9
+ return selected;
10
+ }
11
+ var FeedbackMaintenanceClient = class {
12
+ endpoint;
13
+ token;
14
+ constructor({ endpoint, token }) {
15
+ const url = new URL(endpoint);
16
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && ["localhost", "127.0.0.1"].includes(url.hostname)) || url.username || url.password || url.pathname !== "/" || url.search || url.hash) throw new Error("Invalid feedback origin.");
17
+ if (!token || token.length < 32) throw new Error("SUPPORT_MAINTAINER_TOKEN must be configured.");
18
+ this.endpoint = url.origin;
19
+ this.token = token;
20
+ }
21
+ request = async (path, body) => {
22
+ const response = await fetch(this.endpoint + "/api/support/maintenance" + path, {
23
+ method: body === void 0 ? "GET" : "POST",
24
+ redirect: "error",
25
+ signal: AbortSignal.timeout(15e3),
26
+ headers: {
27
+ Authorization: "Bearer " + this.token,
28
+ "Content-Type": "application/json"
29
+ },
30
+ body: body === void 0 ? void 0 : JSON.stringify(body)
31
+ });
32
+ const result = await response.json();
33
+ if (!response.ok || !result.ok) throw new Error(result.error?.message ?? "Maintenance request failed.");
34
+ return result.data;
35
+ };
36
+ list = async () => {
37
+ const reports = /* @__PURE__ */ new Map();
38
+ let cursor = "", paused = false, maxAuthority = "analyze";
39
+ do {
40
+ const page = await this.request("?cursor=" + encodeURIComponent(cursor));
41
+ paused ||= page.paused;
42
+ maxAuthority = page.maxAuthority;
43
+ for (const report of page.items) reports.set(report.id, report);
44
+ cursor = page.nextCursor ?? "";
45
+ } while (cursor);
46
+ return {
47
+ items: [...reports.values()],
48
+ paused,
49
+ maxAuthority,
50
+ nextCursor: null
51
+ };
52
+ };
53
+ get = async (id) => {
54
+ const report = (await this.list()).items.find((r) => r.id === id);
55
+ if (!report) throw new Error("Feedback not found.");
56
+ return report;
57
+ };
58
+ scan = async () => {
59
+ const page = await this.list();
60
+ return {
61
+ paused: page.paused,
62
+ maxAuthority: page.maxAuthority,
63
+ candidates: page.paused ? [] : selectFeedback(page.items.filter((r) => !r.approval)),
64
+ approved: page.paused ? [] : selectFeedback(page.items.filter((r) => r.approval?.inputVersion === r.inputVersion)),
65
+ unfinished: page.items.filter((r) => ["working", "ready"].includes(r.status))
66
+ };
67
+ };
68
+ act = async (report, action) => {
69
+ const operationId = action.operationId ?? randomUUID();
70
+ try {
71
+ return await this.request("/" + encodeURIComponent(report.id), {
72
+ ...action,
73
+ operationId,
74
+ revision: report.revision,
75
+ runId: report.runId
76
+ });
77
+ } catch (error) {
78
+ throw new Error(`Operation ${operationId}: ${error instanceof Error ? error.message : "request failed"}`);
79
+ }
80
+ };
81
+ };
82
+ //#endregion
83
+ export { selectFeedback as n, FeedbackMaintenanceClient as t };
84
+
85
+ //# sourceMappingURL=feedback-maintenance-client.service-DIMfY_yr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-maintenance-client.service-DIMfY_yr.js","names":[],"sources":["../src/cli/app/services/feedback/feedback-maintenance-client.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { SupportAuthority, SupportMaintenance, SupportPage, SupportReport } from \"@nextclaw/shared\";\n\nexport function selectFeedback(queue: SupportReport[], now = Date.now(), limit = 10): SupportReport[] {\n const pending = queue.filter((r) => r.status === \"received\" && !r.runId);\n const sorted = pending.slice().sort((a, b) => a.priority - b.priority || Number(b.kind !== \"unknown\") - Number(a.kind !== \"unknown\") ||\n Number(b.identity === \"verified\") - Number(a.identity === \"verified\") || a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id));\n const aged = pending.filter((r) => r.priority > 0 && r.kind !== \"unknown\" && now - Date.parse(r.createdAt) >= 48 * 3600000)\n .sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];\n const selected = sorted.slice(0, limit);\n if (aged && !selected.includes(aged) && selected.length && selected.at(-1)!.priority > 0) selected[selected.length - 1] = aged;\n return selected;\n}\ntype MaintenancePage = SupportPage & { paused: boolean; maxAuthority: SupportAuthority };\nexport class FeedbackMaintenanceClient {\n readonly endpoint: string;\n private readonly token: string;\n constructor({ endpoint, token }: { endpoint: string; token: string | undefined }) {\n const url = new URL(endpoint);\n if ((url.protocol !== \"https:\" && !(url.protocol === \"http:\" && [\"localhost\", \"127.0.0.1\"].includes(url.hostname))) || url.username || url.password || url.pathname !== \"/\" || url.search || url.hash) throw new Error(\"Invalid feedback origin.\");\n if (!token || token.length < 32) throw new Error(\"SUPPORT_MAINTAINER_TOKEN must be configured.\");\n this.endpoint = url.origin; this.token = token;\n }\n request = async <T = MaintenancePage>(path: string, body?: unknown): Promise<T> => {\n const response = await fetch(this.endpoint + \"/api/support/maintenance\" + path, {\n method: body === undefined ? \"GET\" : \"POST\", redirect: \"error\", signal: AbortSignal.timeout(15000),\n headers: { Authorization: \"Bearer \" + this.token, \"Content-Type\": \"application/json\" }, body: body === undefined ? undefined : JSON.stringify(body)\n });\n const result = await response.json() as { ok: boolean; data: T; error?: { message: string } };\n if (!response.ok || !result.ok) throw new Error(result.error?.message ?? \"Maintenance request failed.\");\n return result.data;\n };\n list = async (): Promise<MaintenancePage> => {\n const reports = new Map<string, SupportReport>(); let cursor = \"\", paused = false, maxAuthority: SupportAuthority = \"analyze\";\n do {\n const page = await this.request(\"?cursor=\" + encodeURIComponent(cursor));\n paused ||= page.paused; maxAuthority = page.maxAuthority;\n for (const report of page.items) reports.set(report.id, report);\n cursor = page.nextCursor ?? \"\";\n } while (cursor);\n return { items: [...reports.values()], paused, maxAuthority, nextCursor: null };\n };\n get = async (id: string): Promise<SupportReport> => {\n const report = (await this.list()).items.find((r) => r.id === id);\n if (!report) throw new Error(\"Feedback not found.\");\n return report;\n };\n scan = async () => {\n const page = await this.list();\n return { paused: page.paused, maxAuthority: page.maxAuthority,\n candidates: page.paused ? [] : selectFeedback(page.items.filter((r) => !r.approval)),\n approved: page.paused ? [] : selectFeedback(page.items.filter((r) => r.approval?.inputVersion === r.inputVersion)),\n unfinished: page.items.filter((r) => [\"working\", \"ready\"].includes(r.status)) };\n };\n act = async (report: Pick<SupportReport, \"id\" | \"revision\" | \"runId\">, action: Omit<SupportMaintenance, \"operationId\" | \"revision\" | \"runId\"> & { operationId?: string }): Promise<SupportReport> => {\n const operationId = action.operationId ?? randomUUID();\n try {\n return await this.request<SupportReport>(\"/\" + encodeURIComponent(report.id), { ...action, operationId, revision: report.revision, runId: report.runId });\n } catch (error) { throw new Error(`Operation ${operationId}: ${error instanceof Error ? error.message : \"request failed\"}`); }\n };\n}\n"],"mappings":";;AAGA,SAAgB,eAAe,OAAwB,MAAM,KAAK,KAAK,EAAE,QAAQ,IAAqB;CACpG,MAAM,UAAU,MAAM,QAAQ,MAAM,EAAE,WAAW,cAAc,CAAC,EAAE,MAAM;CACxE,MAAM,SAAS,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,YAAY,OAAO,EAAE,SAAS,UAAU,GAAG,OAAO,EAAE,SAAS,UAAU,IAClI,OAAO,EAAE,aAAa,WAAW,GAAG,OAAO,EAAE,aAAa,WAAW,IAAI,EAAE,UAAU,cAAc,EAAE,UAAU,IAAI,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC;CAC9I,MAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,WAAW,KAAK,EAAE,SAAS,aAAa,MAAM,KAAK,MAAM,EAAE,UAAU,IAAI,KAAK,KAAQ,CACxH,MAAM,GAAG,MAAM,EAAE,UAAU,cAAc,EAAE,UAAU,CAAC,CAAC;CAC1D,MAAM,WAAW,OAAO,MAAM,GAAG,MAAM;AACvC,KAAI,QAAQ,CAAC,SAAS,SAAS,KAAK,IAAI,SAAS,UAAU,SAAS,GAAG,GAAG,CAAE,WAAW,EAAG,UAAS,SAAS,SAAS,KAAK;AAC1H,QAAO;;AAGT,IAAa,4BAAb,MAAuC;CACrC;CACA;CACA,YAAY,EAAE,UAAU,SAA0D;EAChF,MAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,MAAK,IAAI,aAAa,YAAY,EAAE,IAAI,aAAa,WAAW,CAAC,aAAa,YAAY,CAAC,SAAS,IAAI,SAAS,KAAM,IAAI,YAAY,IAAI,YAAY,IAAI,aAAa,OAAO,IAAI,UAAU,IAAI,KAAM,OAAM,IAAI,MAAM,2BAA2B;AAClP,MAAI,CAAC,SAAS,MAAM,SAAS,GAAI,OAAM,IAAI,MAAM,+CAA+C;AAChG,OAAK,WAAW,IAAI;AAAQ,OAAK,QAAQ;;CAE3C,UAAU,OAA4B,MAAc,SAA+B;EACjF,MAAM,WAAW,MAAM,MAAM,KAAK,WAAW,6BAA6B,MAAM;GAC9E,QAAQ,SAAS,KAAA,IAAY,QAAQ;GAAQ,UAAU;GAAS,QAAQ,YAAY,QAAQ,KAAM;GAClG,SAAS;IAAE,eAAe,YAAY,KAAK;IAAO,gBAAgB;IAAoB;GAAE,MAAM,SAAS,KAAA,IAAY,KAAA,IAAY,KAAK,UAAU,KAAK;GACpJ,CAAC;EACF,MAAM,SAAS,MAAM,SAAS,MAAM;AACpC,MAAI,CAAC,SAAS,MAAM,CAAC,OAAO,GAAI,OAAM,IAAI,MAAM,OAAO,OAAO,WAAW,8BAA8B;AACvG,SAAO,OAAO;;CAEhB,OAAO,YAAsC;EAC3C,MAAM,0BAAU,IAAI,KAA4B;EAAE,IAAI,SAAS,IAAI,SAAS,OAAO,eAAiC;AACpH,KAAG;GACD,MAAM,OAAO,MAAM,KAAK,QAAQ,aAAa,mBAAmB,OAAO,CAAC;AACxE,cAAW,KAAK;AAAQ,kBAAe,KAAK;AAC5C,QAAK,MAAM,UAAU,KAAK,MAAO,SAAQ,IAAI,OAAO,IAAI,OAAO;AAC/D,YAAS,KAAK,cAAc;WACrB;AACT,SAAO;GAAE,OAAO,CAAC,GAAG,QAAQ,QAAQ,CAAC;GAAE;GAAQ;GAAc,YAAY;GAAM;;CAEjF,MAAM,OAAO,OAAuC;EAClD,MAAM,UAAU,MAAM,KAAK,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE,OAAO,GAAG;AACjE,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,sBAAsB;AACnD,SAAO;;CAET,OAAO,YAAY;EACjB,MAAM,OAAO,MAAM,KAAK,MAAM;AAC9B,SAAO;GAAE,QAAQ,KAAK;GAAQ,cAAc,KAAK;GAC/C,YAAY,KAAK,SAAS,EAAE,GAAG,eAAe,KAAK,MAAM,QAAQ,MAAM,CAAC,EAAE,SAAS,CAAC;GACpF,UAAU,KAAK,SAAS,EAAE,GAAG,eAAe,KAAK,MAAM,QAAQ,MAAM,EAAE,UAAU,iBAAiB,EAAE,aAAa,CAAC;GAClH,YAAY,KAAK,MAAM,QAAQ,MAAM,CAAC,WAAW,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;GAAE;;CAEnF,MAAM,OAAO,QAA0D,WAA8H;EACnM,MAAM,cAAc,OAAO,eAAe,YAAY;AACtD,MAAI;AACF,UAAO,MAAM,KAAK,QAAuB,MAAM,mBAAmB,OAAO,GAAG,EAAE;IAAE,GAAG;IAAQ;IAAa,UAAU,OAAO;IAAU,OAAO,OAAO;IAAO,CAAC;WAClJ,OAAO;AAAE,SAAM,IAAI,MAAM,aAAa,YAAY,IAAI,iBAAiB,QAAQ,MAAM,UAAU,mBAAmB"}
package/dist/index.d.ts CHANGED
@@ -1 +1,36 @@
1
- export * from "@nextclaw/core";
1
+ import { SupportAuthority, SupportMaintenance, SupportPage, SupportReport } from "@nextclaw/shared";
2
+ export * from "@nextclaw/core";
3
+
4
+ //#region src/cli/app/services/feedback/feedback-maintenance-client.service.d.ts
5
+ declare function selectFeedback(queue: SupportReport[], now?: number, limit?: number): SupportReport[];
6
+ type MaintenancePage = SupportPage & {
7
+ paused: boolean;
8
+ maxAuthority: SupportAuthority;
9
+ };
10
+ declare class FeedbackMaintenanceClient {
11
+ readonly endpoint: string;
12
+ private readonly token;
13
+ constructor({
14
+ endpoint,
15
+ token
16
+ }: {
17
+ endpoint: string;
18
+ token: string | undefined;
19
+ });
20
+ request: <T = MaintenancePage>(path: string, body?: unknown) => Promise<T>;
21
+ list: () => Promise<MaintenancePage>;
22
+ get: (id: string) => Promise<SupportReport>;
23
+ scan: () => Promise<{
24
+ paused: boolean;
25
+ maxAuthority: SupportAuthority;
26
+ candidates: SupportReport[];
27
+ approved: SupportReport[];
28
+ unfinished: SupportReport[];
29
+ }>;
30
+ act: (report: Pick<SupportReport, "id" | "revision" | "runId">, action: Omit<SupportMaintenance, "operationId" | "revision" | "runId"> & {
31
+ operationId?: string;
32
+ }) => Promise<SupportReport>;
33
+ }
34
+ //#endregion
35
+ export { FeedbackMaintenanceClient, selectFeedback };
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cli/app/services/feedback/feedback-maintenance-client.service.ts"],"mappings":";;;;iBAGgB,cAAA,CAAe,KAAA,EAAO,aAAA,IAAiB,GAAA,WAAkB,KAAA,YAAa,aAAA;AAAA,KAUjF,eAAA,GAAkB,WAAA;EAAgB,MAAA;EAAiB,YAAA,EAAc,gBAAA;AAAA;AAAA,cACzD,yBAAA;EAAA,SACF,QAAA;EAAA,iBACQ,KAAA;;IACH,QAAA;IAAU;EAAA;IAAW,QAAA;IAAkB,KAAA;EAAA;EAMrD,OAAA,OAAqB,eAAA,EAAiB,IAAA,UAAc,IAAA,eAAiB,OAAA,CAAQ,CAAA;EAS7E,IAAA,QAAiB,OAAA,CAAQ,eAAA;EAUzB,GAAA,GAAa,EAAA,aAAa,OAAA,CAAQ,aAAA;EAKlC,IAAA,QAAI,OAAA;;;;;;;EAOJ,GAAA,GAAa,MAAA,EAAQ,IAAA,CAAK,aAAA,gCAA6C,MAAA,EAAQ,IAAA,CAAK,kBAAA;IAA8D,WAAA;EAAA,MAAyB,OAAA,CAAQ,aAAA;AAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
+ import { n as selectFeedback, t as FeedbackMaintenanceClient } from "./feedback-maintenance-client.service-DIMfY_yr.js";
1
2
  export * from "@nextclaw/core";
2
- export {};
3
+ export { FeedbackMaintenanceClient, selectFeedback };
@@ -1,14 +1,16 @@
1
+ import { t as FeedbackMaintenanceClient } from "./feedback-maintenance-client.service-DIMfY_yr.js";
1
2
  import { createRequire } from "node:module";
2
- import { APP_NAME, APP_TAGLINE, getConfigPath, getDataDir, getRunPath, loadConfig, resolveConfigSecrets } from "@nextclaw/core";
3
+ import { APP_NAME, APP_TAGLINE, getConfigPath, getDataDir, getDataPath, getRunPath, loadConfig, resolveConfigSecrets } from "@nextclaw/core";
4
+ import { createHash, randomBytes, randomUUID } from "node:crypto";
3
5
  import { NextclawDistributionService, NextclawServiceRuntime, readLearningLoopRuntimeConfig } from "@nextclaw/service";
4
6
  import { constants, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
- import path, { join, resolve } from "node:path";
7
+ import path, { dirname, join, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
6
9
  import { Argument, Command, InvalidArgumentError, Option } from "commander";
7
- import { createHash, randomBytes } from "node:crypto";
10
+ import { access, mkdir, mkdtemp, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
8
11
  import { execFile } from "node:child_process";
9
12
  import { tmpdir } from "node:os";
10
13
  import "@nextclaw/server";
11
- import { access, mkdtemp, readFile, rm, stat } from "node:fs/promises";
12
14
  import { AppBuildService, AppBundleService, AppHomeService, AppInstanceInventoryService, AppInstanceStorageService, AppManifestService, AppPlatformTargetService, AppPublishService, AppPublishValidationService, AppRuntimeToolchainService, AppScaffoldService, isAppComponentManifestBundle } from "@nextclaw/app-runtime";
13
15
  import { NextclawHarnessError, ServiceAppRuntimeService, buildServiceActionId, getServiceAppManifestPath, mergeServiceAppRuntimeActions, readServiceAppManifest } from "@nextclaw/kernel";
14
16
  import { format, promisify } from "node:util";
@@ -16,6 +18,251 @@ import { formatNextClawAppInstallCommand } from "@nextclaw/shared";
16
18
  var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
17
19
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
18
20
  //#endregion
21
+ //#region src/cli/app/services/feedback/feedback-client.service.ts
22
+ var FeedbackClient = class {
23
+ endpoint;
24
+ constructor(options) {
25
+ this.options = options;
26
+ const url = new URL(options.endpoint ?? "https://roadmap.nextclaw.io");
27
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && ["127.0.0.1", "localhost"].includes(url.hostname)) || url.username || url.password || url.search || url.hash || url.pathname !== "/") throw new Error("Feedback endpoint must be an HTTPS origin (or local HTTP for acceptance).");
28
+ this.endpoint = url.origin;
29
+ }
30
+ file = (id) => {
31
+ if (!/^[a-zA-Z0-9_-]{16,80}$/.test(id)) throw new Error("Invalid feedback ID.");
32
+ return join(this.options.directory, id + ".json");
33
+ };
34
+ save = async (value) => {
35
+ await mkdir(this.options.directory, {
36
+ recursive: true,
37
+ mode: 448
38
+ });
39
+ const target = this.file(value.receipt.id), temp = target + "." + randomUUID() + ".tmp";
40
+ await writeFile(temp, JSON.stringify(value), { mode: 384 });
41
+ await rename(temp, target);
42
+ };
43
+ load = async (id) => {
44
+ const value = JSON.parse(await readFile(this.file(id), "utf8"));
45
+ if (value.receipt.endpoint !== this.endpoint) throw new Error("Receipt belongs to another feedback service.");
46
+ return value;
47
+ };
48
+ request = async (path, body, receipt) => {
49
+ const token = this.endpoint === "https://roadmap.nextclaw.io" ? this.options.platformToken : void 0;
50
+ const response = await fetch(this.endpoint + "/api/support" + path, {
51
+ method: body === void 0 ? "GET" : "POST",
52
+ redirect: "error",
53
+ signal: AbortSignal.timeout(15e3),
54
+ headers: {
55
+ "Content-Type": "application/json",
56
+ ...token ? { Authorization: "Bearer " + token } : {},
57
+ ...receipt?.key ? { "x-feedback-receipt": receipt.key } : {}
58
+ },
59
+ body: body === void 0 ? void 0 : JSON.stringify(body)
60
+ });
61
+ const payload = await response.json();
62
+ if (!response.ok || !payload.ok) throw new Error(payload.error?.message ?? "Feedback request failed.");
63
+ return payload.data;
64
+ };
65
+ submit = async (input) => {
66
+ const id = input.requestId ?? randomUUID();
67
+ let saved;
68
+ try {
69
+ saved = await this.load(id);
70
+ if (!saved.submission) return await this.get(id);
71
+ } catch (error) {
72
+ if (error.code !== "ENOENT") throw error;
73
+ const key = randomBytes(32).toString("hex");
74
+ saved = {
75
+ receipt: {
76
+ id,
77
+ key,
78
+ title: input.title,
79
+ endpoint: this.endpoint
80
+ },
81
+ submission: {
82
+ ...input,
83
+ requestId: id,
84
+ receiptKey: key
85
+ }
86
+ };
87
+ await this.save(saved);
88
+ }
89
+ try {
90
+ const report = await this.request("", saved.submission);
91
+ await this.save({ receipt: saved.receipt });
92
+ return report;
93
+ } catch (error) {
94
+ throw new Error(`Feedback request ${id} is saved locally for retry. ${error instanceof Error ? error.message : "Request failed."}`);
95
+ }
96
+ };
97
+ list = async () => {
98
+ let files;
99
+ try {
100
+ files = await readdir(this.options.directory);
101
+ } catch (error) {
102
+ if (error.code === "ENOENT") return [];
103
+ throw error;
104
+ }
105
+ const results = [];
106
+ for (const file of files.filter((name) => name.endsWith(".json"))) {
107
+ const value = JSON.parse(await readFile(join(this.options.directory, file), "utf8"));
108
+ if (value.receipt.endpoint === this.endpoint) results.push({
109
+ id: value.receipt.id,
110
+ title: value.receipt.title,
111
+ pending: Boolean(value.submission)
112
+ });
113
+ }
114
+ return results;
115
+ };
116
+ get = async (id) => {
117
+ return this.request("/" + id, void 0, (await this.load(id)).receipt);
118
+ };
119
+ update = async (id, action, body, operationId = randomUUID()) => {
120
+ return this.request("/" + id, {
121
+ operationId,
122
+ action,
123
+ body
124
+ }, (await this.load(id)).receipt);
125
+ };
126
+ syncAccount = async () => {
127
+ let cursor = "", count = 0;
128
+ do {
129
+ const page = await this.request("?cursor=" + encodeURIComponent(cursor));
130
+ for (const report of page.items) {
131
+ try {
132
+ await this.load(report.id);
133
+ } catch (error) {
134
+ if (error.code !== "ENOENT") throw error;
135
+ await this.save({ receipt: {
136
+ id: report.id,
137
+ key: "",
138
+ endpoint: this.endpoint,
139
+ title: report.title
140
+ } });
141
+ }
142
+ count++;
143
+ }
144
+ cursor = page.nextCursor;
145
+ } while (cursor);
146
+ return { count };
147
+ };
148
+ exportReceipt = async (id, destination) => {
149
+ const { receipt } = await this.load(id);
150
+ if (!receipt.key) throw new Error("Account-linked report has no anonymous receipt.");
151
+ await writeFile(destination, JSON.stringify(receipt), {
152
+ mode: 384,
153
+ flag: "wx"
154
+ });
155
+ };
156
+ importReceipt = async (source) => {
157
+ const receipt = JSON.parse(await readFile(source, "utf8"));
158
+ this.file(receipt.id);
159
+ if (receipt.endpoint !== this.endpoint || !/^[a-f0-9]{64}$/.test(receipt.key)) throw new Error("Invalid receipt or endpoint mismatch.");
160
+ const report = await this.request("/" + receipt.id, void 0, receipt);
161
+ await this.save({ receipt: {
162
+ ...receipt,
163
+ title: report.title
164
+ } });
165
+ return report;
166
+ };
167
+ };
168
+ //#endregion
169
+ //#region src/cli/app/commands/feedback-maintenance-command-registration.utils.ts
170
+ async function client(o) {
171
+ return new FeedbackMaintenanceClient({
172
+ endpoint: o.endpoint ?? process.env.NEXTCLAW_FEEDBACK_ENDPOINT ?? "https://roadmap.nextclaw.io",
173
+ token: o.tokenFile ? (await readFile(o.tokenFile, "utf8")).trim() : process.env.SUPPORT_MAINTAINER_TOKEN
174
+ });
175
+ }
176
+ async function feedbackMaintainerSkillPath() {
177
+ let directory = dirname(fileURLToPath(import.meta.url));
178
+ while (dirname(directory) !== directory) {
179
+ try {
180
+ if (JSON.parse(await readFile(join(directory, "package.json"), "utf8")).name === "nextclaw") {
181
+ const path = join(directory, "resources/skills/feedback-maintainer/SKILL.md");
182
+ await access(path);
183
+ return path;
184
+ }
185
+ } catch (error) {
186
+ if (error.code !== "ENOENT") throw error;
187
+ }
188
+ directory = dirname(directory);
189
+ }
190
+ throw new Error("Packaged feedback maintainer skill is missing.");
191
+ }
192
+ function registerFeedbackMaintenanceCommands(feedback) {
193
+ const group = feedback.command("maintain").description("Read and act on feedback with a maintainer credential; cannot approve work");
194
+ const command = (name, description) => group.command(name).description(description).option("--endpoint <url>", "Feedback service origin").option("--token-file <path>", "Private maintainer token file; otherwise use SUPPORT_MAINTAINER_TOKEN");
195
+ group.command("skill-path").description("Print the installed maintainer skill path").action(async () => console.log(await feedbackMaintainerSkillPath()));
196
+ command("list", "Read the maintenance queue").action(async (o) => console.log(JSON.stringify(await (await client(o)).scan(), null, 2)));
197
+ command("get <id>", "Read the current report, approval and comments").action(async (id, o) => console.log(JSON.stringify(await (await client(o)).get(id), null, 2)));
198
+ for (const [name, action] of Object.entries({
199
+ claim: "claim",
200
+ comment: "reply",
201
+ result: "checkpoint",
202
+ triage: "triage",
203
+ recover: "recover",
204
+ "authorize-delivery": "authorize-delivery",
205
+ publish: "publish"
206
+ })) command(name + " <id>", `Perform maintainer ${name}; server enforces approval and current execution`).requiredOption("--revision <number>", "Revision returned by get or previous operation").option("--run-id <id>", "Current run ID; omit before claim").option("--operation-id <id>", "Stable operation ID for retry").option("--body-file <path>", "UTF-8 comment text").option("--evidence-file <path>", "UTF-8 verification or recovery evidence").option("--status <status>", "Result: ready, needs-info or needs-decision; triage also allows resolved").option("--kind <kind>", "Triage kind").option("--priority <number>", "Triage priority 0–3").option("--fixed-commit <sha>", "Approved repair commit for delivery").option("--release-file <path>", "JSON release proof; independently verified by the platform").action(async (id, o) => {
207
+ const revision = Number(o.revision);
208
+ if (!Number.isInteger(revision) || revision < 1) throw new Error("Revision must be a positive integer.");
209
+ if (name === "comment" && !o.bodyFile) throw new Error("comment requires --body-file.");
210
+ const input = {
211
+ action,
212
+ operationId: o.operationId,
213
+ status: o.status,
214
+ kind: o.kind,
215
+ priority: o.priority === void 0 ? void 0 : Number(o.priority),
216
+ authority: action === "triage" ? "analyze" : void 0,
217
+ fixedCommit: o.fixedCommit,
218
+ body: o.bodyFile ? await readFile(o.bodyFile, "utf8") : void 0,
219
+ evidence: o.evidenceFile ? await readFile(o.evidenceFile, "utf8") : void 0,
220
+ release: o.releaseFile ? JSON.parse(await readFile(o.releaseFile, "utf8")) : void 0
221
+ };
222
+ console.log(JSON.stringify(await (await client(o)).act({
223
+ id,
224
+ revision,
225
+ runId: o.runId ?? null
226
+ }, input), null, 2));
227
+ });
228
+ }
229
+ //#endregion
230
+ //#region src/cli/app/commands/feedback-command-registration.utils.ts
231
+ function manager(options) {
232
+ const config = loadConfig();
233
+ return new FeedbackClient({
234
+ directory: join(getDataPath(), "feedback"),
235
+ endpoint: options.endpoint ?? process.env.NEXTCLAW_FEEDBACK_ENDPOINT,
236
+ platformToken: config.providers.nextclaw?.apiKey
237
+ });
238
+ }
239
+ function print(value) {
240
+ console.log(JSON.stringify(value, null, 2));
241
+ }
242
+ function registerFeedbackCommands(program) {
243
+ const feedback = program.command("feedback").description("Submit and track private feedback without an external account");
244
+ registerFeedbackMaintenanceCommands(feedback);
245
+ const command = (name, description) => feedback.command(name).description(description).option("--endpoint <url>", "Feedback service origin");
246
+ command("submit", "Submit a private report; receipt is saved locally").requiredOption("--title <text>", "Short summary").requiredOption("--description <text>", "Problem and expected behavior").option("--environment <text>", "Environment details").option("--affected-version <version>", "Affected version").option("--request-id <id>", "Retry a saved submission").action(async (o) => print(await manager(o).submit({
247
+ title: o.title,
248
+ description: o.description,
249
+ environment: o.environment,
250
+ version: o.affectedVersion,
251
+ requestId: o.requestId
252
+ })));
253
+ command("list", "List local feedback receipts").action(async (o) => print(await manager(o).list()));
254
+ command("get <id>", "Read a report and maintainer replies").action(async (id, o) => print(await manager(o).get(id)));
255
+ command("reply <id> <message>", "Add reproduction details or report that a fix still fails").option("--operation-id <id>", "Stable operation ID for retry").action(async (id, message, o) => print(await manager(o).update(id, "reply", message, o.operationId)));
256
+ command("withdraw <id>", "Withdraw a report and stop new processing").action(async (id, o) => print(await manager(o).update(id, "withdraw")));
257
+ command("link <id>", "Associate a receipt with the current NextClaw account").action(async (id, o) => print(await manager(o).update(id, "link")));
258
+ command("sync", "Fetch feedback belonging to the current NextClaw account").action(async (o) => print(await manager(o).syncAccount()));
259
+ command("export <id> <file>", "Save a private receipt backup; keep the file secret").action(async (id, file, o) => {
260
+ await manager(o).exportReceipt(id, file);
261
+ print({ saved: true });
262
+ });
263
+ command("import <file>", "Restore a private receipt backup").action(async (file, o) => print(await manager(o).importReceipt(file)));
264
+ }
265
+ //#endregion
19
266
  //#region ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js
20
267
  var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
21
268
  const BINARY_TYPES = [
@@ -6436,6 +6683,7 @@ program.command("onboard").description(`Initialize ${APP_NAME} configuration and
6436
6683
  program.command("init").description(`Initialize ${APP_NAME} configuration and workspace`).option("-f, --force", "Overwrite existing template files").action(async (opts) => runtime.init({ force: Boolean(opts.force) }));
6437
6684
  program.command("login").description("Sign in to NextClaw Platform and save the platform token locally (browser flow by default)").option("--api-base <url>", "Platform API base (supports /v1 suffix)").option("--email <email>", "Login email for direct password sign-in").option("--password <password>", "Login password for direct password sign-in").option("--no-open", "Do not open the browser automatically").action(async (opts) => runtime.login(opts));
6438
6685
  const account = program.command("account").description("Inspect and manage your NextClaw account");
6686
+ registerFeedbackCommands(program);
6439
6687
  account.command("status").description("Show account status and personal marketplace publish readiness").option("--api-base <url>", "Platform API base (supports /v1 suffix)").option("--json", "Output JSON", false).action(async (opts) => runtime.account.status(opts));
6440
6688
  account.command("set-username <username>").description("Set your NextClaw username for personal marketplace publishing").option("--api-base <url>", "Platform API base (supports /v1 suffix)").option("--json", "Output JSON", false).action(async (username, opts) => runtime.account.setUsername(username, opts));
6441
6689
  registerRemoteCommandGroup(program, runtime);
@@ -6498,4 +6746,4 @@ program.command("usage").description("Show observed LLM usage snapshots, history
6498
6746
  //#endregion
6499
6747
  export { program as nextclawCliProgram };
6500
6748
 
6501
- //# sourceMappingURL=nextclaw-cli-app-CjtgVEdo.js.map
6749
+ //# sourceMappingURL=nextclaw-cli-app-Mz2hYz_-.js.map