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.
- package/README.md +3 -1
- package/dist/cli/app/index.js +2 -2
- package/dist/cli/launcher/index.js +1 -1
- package/dist/{distribution-BAU3XUQJ.js → distribution-DzRLAMTC.js} +1 -1
- package/dist/{distribution-CND3AWXk.js → distribution-kH-YiPGh.js} +1 -1
- package/dist/{distribution-CND3AWXk.js.map → distribution-kH-YiPGh.js.map} +1 -1
- package/dist/feedback-maintenance-client.service-DIMfY_yr.js +85 -0
- package/dist/feedback-maintenance-client.service-DIMfY_yr.js.map +1 -0
- package/dist/index.d.ts +36 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/dist/{nextclaw-cli-app-CjtgVEdo.js → nextclaw-cli-app-Mz2hYz_-.js} +253 -5
- package/dist/nextclaw-cli-app-Mz2hYz_-.js.map +1 -0
- package/package.json +18 -18
- package/resources/USAGE.md +22 -0
- package/resources/skills/feedback-maintainer/SKILL.md +21 -0
- package/ui-dist/.vite/manifest.json +1299 -994
- package/ui-dist/.vite/manifest.json.gz +0 -0
- package/ui-dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/ui-dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/ui-dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/ui-dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/ui-dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/ui-dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/ui-dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/ui-dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/ui-dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/ui-dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/ui-dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/ui-dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/ui-dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/ui-dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/ui-dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/ui-dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/ui-dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/ui-dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/ui-dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/ui-dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/ui-dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/ui-dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/ui-dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/ui-dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/ui-dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/ui-dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/ui-dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/ui-dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/ui-dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/ui-dist/assets/{abnfDiagram-VRR7QNED-Kzlh3ZEC.js → abnfDiagram-VRR7QNED-DX_u5BBX.js} +1 -1
- package/ui-dist/assets/abnfDiagram-VRR7QNED-DX_u5BBX.js.gz +0 -0
- package/ui-dist/assets/{account-panel-UvHFa8Kl.js → account-panel-BXTCFv7d.js} +1 -1
- package/ui-dist/assets/account-panel-BXTCFv7d.js.gz +0 -0
- package/ui-dist/assets/{aiden0z-pptx-renderer.es-k1xZLzeo.js → aiden0z-pptx-renderer.es-C-E9e5yB.js} +1 -1
- package/ui-dist/assets/aiden0z-pptx-renderer.es-C-E9e5yB.js.gz +0 -0
- package/ui-dist/assets/{api-Dffeij78.js → api-DqzQ-_3w.js} +1 -1
- package/ui-dist/assets/api-DqzQ-_3w.js.gz +0 -0
- package/ui-dist/assets/{app-data-DzaIMy4D.js → app-data-C54N2p8b.js} +1 -1
- package/ui-dist/assets/app-data-C54N2p8b.js.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-V0xnU_Wb.js +115 -0
- package/ui-dist/assets/app-presenter-provider-V0xnU_Wb.js.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-jNGlmBLe.css +1 -0
- package/ui-dist/assets/app-presenter-provider-jNGlmBLe.css.gz +0 -0
- package/ui-dist/assets/{appearance-settings-page-D8cWniw-.js → appearance-settings-page-83T2AtVm.js} +1 -1
- package/ui-dist/assets/appearance-settings-page-83T2AtVm.js.gz +0 -0
- package/ui-dist/assets/{arc-CpivM836.js → arc-Cxwa624o.js} +1 -1
- package/ui-dist/assets/arc-Cxwa624o.js.gz +0 -0
- package/ui-dist/assets/architecture-TIHT7OUA-DEt0Abz9.js +1 -0
- package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-ifjW1qjI.js → architectureDiagram-ZJ3FMSHR-D8mCj0H1.js} +1 -1
- package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-D8mCj0H1.js.gz +0 -0
- package/ui-dist/assets/{blockDiagram-677ZJIJ3-C_zeJrKF.js → blockDiagram-677ZJIJ3-CbGC1IHl.js} +1 -1
- package/ui-dist/assets/{blockDiagram-677ZJIJ3-C_zeJrKF.js.gz → blockDiagram-677ZJIJ3-CbGC1IHl.js.gz} +0 -0
- package/ui-dist/assets/{c4Diagram-LMCZKHZV-CpapRftp.js → c4Diagram-LMCZKHZV-BQhGC1Vc.js} +1 -1
- package/ui-dist/assets/c4Diagram-LMCZKHZV-BQhGC1Vc.js.gz +0 -0
- package/ui-dist/assets/channel-CxQkbwRD.js +1 -0
- package/ui-dist/assets/{channels-list-page-B_fYP1Pn.js → channels-list-page-Bv7CVSqV.js} +1 -1
- package/ui-dist/assets/channels-list-page-Bv7CVSqV.js.gz +0 -0
- package/ui-dist/assets/chunk-2Q5K7J3B-ClVhziok.js +1 -0
- package/ui-dist/assets/{chunk-32BRIVSS-BKBwdmKR.js → chunk-32BRIVSS-B74ZZwYG.js} +1 -1
- package/ui-dist/assets/chunk-32BRIVSS-B74ZZwYG.js.gz +0 -0
- package/ui-dist/assets/{chunk-52WLFC77-BgZRCpDx.js → chunk-52WLFC77-BvmxW_f_.js} +1 -1
- package/ui-dist/assets/chunk-52WLFC77-BvmxW_f_.js.gz +0 -0
- package/ui-dist/assets/{chunk-5FCAYU7R-YWfOINJi.js → chunk-5FCAYU7R-DQvBRnwL.js} +1 -1
- package/ui-dist/assets/{chunk-5HE753X5-BZ6I07d2.js → chunk-5HE753X5-CDIH0_y3.js} +1 -1
- package/ui-dist/assets/{chunk-5JV3BV7I-B7QYgZU5.js → chunk-5JV3BV7I-CcevlKd-.js} +1 -1
- package/ui-dist/assets/chunk-5JV3BV7I-CcevlKd-.js.gz +0 -0
- package/ui-dist/assets/{chunk-5TONJI2A-DjyQwgL2.js → chunk-5TONJI2A-_3dxVdnY.js} +1 -1
- package/ui-dist/assets/chunk-5TONJI2A-_3dxVdnY.js.gz +0 -0
- package/ui-dist/assets/{chunk-5VM5RSS4-DheHV7X2.js → chunk-5VM5RSS4-pGO5vvo-.js} +1 -1
- package/ui-dist/assets/{chunk-7BUUIJ7U-D6bq2PKF.js → chunk-7BUUIJ7U-DEKF5uAN.js} +1 -1
- package/ui-dist/assets/chunk-7BUUIJ7U-DEKF5uAN.js.gz +0 -0
- package/ui-dist/assets/{chunk-BIQX33UG-CL9x0ibm.js → chunk-BIQX33UG-CjBFgq2r.js} +1 -1
- package/ui-dist/assets/{chunk-C7G6YPKG-8z3B6RUH.js → chunk-C7G6YPKG-e_K9OGTz.js} +1 -1
- package/ui-dist/assets/chunk-C7G6YPKG-e_K9OGTz.js.gz +0 -0
- package/ui-dist/assets/{chunk-CQNSW5MT-DpHkxY3n.js → chunk-CQNSW5MT-C2IiHyHz.js} +1 -1
- package/ui-dist/assets/{chunk-CYSBUYHQ-DIJDLsdJ.js → chunk-CYSBUYHQ-DCC6KmGp.js} +1 -1
- package/ui-dist/assets/{chunk-EMLP6XTP-B-LjAyVd.js → chunk-EMLP6XTP-BYGgekQ0.js} +1 -1
- package/ui-dist/assets/{chunk-EX3LRPZG-BChuEPvO.js → chunk-EX3LRPZG-FGcwuVsA.js} +1 -1
- package/ui-dist/assets/chunk-EX3LRPZG-FGcwuVsA.js.gz +0 -0
- package/ui-dist/assets/{chunk-FWX5IMBZ-fBFt0u3f.js → chunk-FWX5IMBZ-CV3Ih_Os.js} +2 -2
- package/ui-dist/assets/chunk-FWX5IMBZ-CV3Ih_Os.js.gz +0 -0
- package/ui-dist/assets/{chunk-HOUHSVGY-MD0SpW5A.js → chunk-HOUHSVGY-CXpq_hfV.js} +1 -1
- package/ui-dist/assets/chunk-HOUHSVGY-CXpq_hfV.js.gz +0 -0
- package/ui-dist/assets/{chunk-ICXQ74PX-DvCcw_hz.js → chunk-ICXQ74PX-CZIpjupq.js} +1 -1
- package/ui-dist/assets/chunk-ICXQ74PX-CZIpjupq.js.gz +0 -0
- package/ui-dist/assets/{chunk-JG7HCLWE-B8zqBnU9.js → chunk-JG7HCLWE-CdgwBpW7.js} +1 -1
- package/ui-dist/assets/chunk-JG7HCLWE-CdgwBpW7.js.gz +0 -0
- package/ui-dist/assets/{chunk-JWPE2WC7-C9efnkGb.js → chunk-JWPE2WC7-BPjAZpOQ.js} +1 -1
- package/ui-dist/assets/{chunk-MOJQB5TN-gXbfqoqq.js → chunk-MOJQB5TN-DbJDm8to.js} +1 -1
- package/ui-dist/assets/chunk-MOJQB5TN-DbJDm8to.js.gz +0 -0
- package/ui-dist/assets/{chunk-MOZMSUNE-twIwdkqC.js → chunk-MOZMSUNE-BUa1fqKn.js} +1 -1
- package/ui-dist/assets/{chunk-OGEWGWER-DdR0_cWK.js → chunk-OGEWGWER-CtnzLgRu.js} +1 -1
- package/ui-dist/assets/{chunk-OSBZ3O6U-D7D58Foa.js → chunk-OSBZ3O6U-fUgdpTUM.js} +1 -1
- package/ui-dist/assets/{chunk-PUDLZKDR-DPILgOVY.js → chunk-PUDLZKDR-CtDWZT9-.js} +1 -1
- package/ui-dist/assets/chunk-PUDLZKDR-CtDWZT9-.js.gz +0 -0
- package/ui-dist/assets/{chunk-Q4XR5HBZ-C0JJx7lW.js → chunk-Q4XR5HBZ-BxnK2qxr.js} +1 -1
- package/ui-dist/assets/chunk-Q4XR5HBZ-BxnK2qxr.js.gz +0 -0
- package/ui-dist/assets/{chunk-QBLGF6JB-Dbsf69ng.js → chunk-QBLGF6JB-CH4UKoCF.js} +1 -1
- package/ui-dist/assets/{chunk-R7FJI6CG-Bb8n616-.js → chunk-R7FJI6CG-BxwFoF1v.js} +1 -1
- package/ui-dist/assets/chunk-R7FJI6CG-BxwFoF1v.js.gz +0 -0
- package/ui-dist/assets/{chunk-RYQCIY6F-1HOsOrSl.js → chunk-RYQCIY6F-DpHAmq7O.js} +1 -1
- package/ui-dist/assets/chunk-RYQCIY6F-DpHAmq7O.js.gz +0 -0
- package/ui-dist/assets/{chunk-U6XO7XAA-BAFDVb1v.js → chunk-U6XO7XAA-BjH2VUHU.js} +1 -1
- package/ui-dist/assets/chunk-U6XO7XAA-BjH2VUHU.js.gz +0 -0
- package/ui-dist/assets/{chunk-V7JOEXUC-8-g68lu5.js → chunk-V7JOEXUC-DKJZ3HGj.js} +1 -1
- package/ui-dist/assets/chunk-V7JOEXUC-DKJZ3HGj.js.gz +0 -0
- package/ui-dist/assets/chunk-VAUOI2AC-DZQxkIsv.js +1 -0
- package/ui-dist/assets/{chunk-VR4S4FIN-P6UGmaYd.js → chunk-VR4S4FIN-Cf-o2GtI.js} +1 -1
- package/ui-dist/assets/{chunk-WYO6CB5R-6wjFTXNP.js → chunk-WYO6CB5R-zeNXGm20.js} +3 -2
- package/ui-dist/assets/chunk-WYO6CB5R-zeNXGm20.js.gz +0 -0
- package/ui-dist/assets/chunk-XXDRQBXY-BkExtw5C.js +1 -0
- package/ui-dist/assets/{chunk-YOTPTUD7-CLYXVZAi.js → chunk-YOTPTUD7-Ck87Kqxe.js} +1 -1
- package/ui-dist/assets/{chunk-ZGVPDNZ5-BRTmSAhp.js → chunk-ZGVPDNZ5-BbfK6Bfd.js} +1 -1
- package/ui-dist/assets/chunk-ZGVPDNZ5-BbfK6Bfd.js.gz +0 -0
- package/ui-dist/assets/{chunk-ZIRB5QZD-CH_1eoSV.js → chunk-ZIRB5QZD-BDpzh4Yl.js} +1 -1
- package/ui-dist/assets/chunk-ZIRB5QZD-BDpzh4Yl.js.gz +0 -0
- package/ui-dist/assets/classDiagram-OUVF2IWQ-Bd6apBb-.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CYxUZGCI.js +1 -0
- package/ui-dist/assets/{config-split-page-6hHiiapl.js → config-split-page-DqAXKLmG.js} +1 -1
- package/ui-dist/assets/config-split-page-DqAXKLmG.js.gz +0 -0
- package/ui-dist/assets/{confirm-dialog-ClT6iaj8.js → confirm-dialog-BTKCWMn6.js} +1 -1
- package/ui-dist/assets/confirm-dialog-BTKCWMn6.js.gz +0 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-L7w_qScX.js → cose-bilkent-JH36ORCC-CQfMxKCT.js} +1 -1
- package/ui-dist/assets/cose-bilkent-JH36ORCC-CQfMxKCT.js.gz +0 -0
- package/ui-dist/assets/cynefin-VYW2F7L2-CV0bFLH9.js +1 -0
- package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-Bay7uDSR.js → cynefinDiagram-TSTJHNR4-CxFTiC-p.js} +1 -1
- package/ui-dist/assets/cynefinDiagram-TSTJHNR4-CxFTiC-p.js.gz +0 -0
- package/ui-dist/assets/{dagre-CJ_hX8xv.js → dagre-CaBNMcB1.js} +1 -1
- package/ui-dist/assets/dagre-CaBNMcB1.js.gz +0 -0
- package/ui-dist/assets/{dagre-VKFMJZFB-DDhk-2B3.js → dagre-VKFMJZFB-S_7Hc7bI.js} +1 -1
- package/ui-dist/assets/dagre-VKFMJZFB-S_7Hc7bI.js.gz +0 -0
- package/ui-dist/assets/{desktop-capabilities-page-CB5pniTx.js → desktop-capabilities-page-zLzCSB7A.js} +1 -1
- package/ui-dist/assets/desktop-capabilities-page-zLzCSB7A.js.gz +0 -0
- package/ui-dist/assets/{desktop-update-config-OuQV73gg.js → desktop-update-config-PmofcFf6.js} +1 -1
- package/ui-dist/assets/desktop-update-config-PmofcFf6.js.gz +0 -0
- package/ui-dist/assets/{diagram-FQU43EPY-somFq5y8.js → diagram-FQU43EPY-C7zENvFb.js} +1 -1
- package/ui-dist/assets/diagram-FQU43EPY-C7zENvFb.js.gz +0 -0
- package/ui-dist/assets/{diagram-G47NLZAW-hzgyQsPd.js → diagram-G47NLZAW-DqYTCqZA.js} +1 -1
- package/ui-dist/assets/diagram-G47NLZAW-DqYTCqZA.js.gz +0 -0
- package/ui-dist/assets/{diagram-NH7WQ7WH-BkJ4gEQJ.js → diagram-NH7WQ7WH-BfSJtXRc.js} +1 -1
- package/ui-dist/assets/diagram-NH7WQ7WH-BfSJtXRc.js.gz +0 -0
- package/ui-dist/assets/{diagram-OA4YK3LP-CS3ZkK4w.js → diagram-OA4YK3LP-CFO-j67H.js} +1 -1
- package/ui-dist/assets/diagram-OA4YK3LP-CFO-j67H.js.gz +0 -0
- package/ui-dist/assets/{diagram-WEI45ONY-BApo-JHS.js → diagram-WEI45ONY-DBQDbTaJ.js} +1 -1
- package/ui-dist/assets/diagram-WEI45ONY-DBQDbTaJ.js.gz +0 -0
- package/ui-dist/assets/{doc-browser-Cu58uiEg.js → doc-browser-BJrre2S_.js} +1 -1
- package/ui-dist/assets/doc-browser-BJrre2S_.js.gz +0 -0
- package/ui-dist/assets/doc-browser-BPqA-zQx.js +1 -0
- package/ui-dist/assets/{doc-browser-context-CekJxJFm.js → doc-browser-context-TILuCY5c.js} +1 -1
- package/ui-dist/assets/doc-browser-context-TILuCY5c.js.gz +0 -0
- package/ui-dist/assets/{docx-preview-ByCKKIVT.js → docx-preview-B4-aDfvO.js} +1 -1
- package/ui-dist/assets/docx-preview-B4-aDfvO.js.gz +0 -0
- package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-DWjfeEie.js → ebnfDiagram-CCIWWBDH-CfDNIXFN.js} +1 -1
- package/ui-dist/assets/ebnfDiagram-CCIWWBDH-CfDNIXFN.js.gz +0 -0
- package/ui-dist/assets/{erDiagram-Q63AITRT-DR7vWYHM.js → erDiagram-Q63AITRT-D95rFXMM.js} +1 -1
- package/ui-dist/assets/erDiagram-Q63AITRT-D95rFXMM.js.gz +0 -0
- package/ui-dist/assets/eventmodeling-45OFAUF4-BzkLWWdP.js +1 -0
- package/ui-dist/assets/{extensions-B5r-0jCq.js → extensions-CVUFK6Jj.js} +1 -1
- package/ui-dist/assets/extensions-CVUFK6Jj.js.gz +0 -0
- package/ui-dist/assets/flowDiagram-23GEKE2U-ukkCsB0j.js +1 -0
- package/ui-dist/assets/{ganttDiagram-NO4QXBWP-E3l9tuaL.js → ganttDiagram-NO4QXBWP-Bawg0P0r.js} +1 -1
- package/ui-dist/assets/ganttDiagram-NO4QXBWP-Bawg0P0r.js.gz +0 -0
- package/ui-dist/assets/gitGraph-TEB2WS4Q-BYFhT0Q5.js +1 -0
- package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-DiMvbHKf.js → gitGraphDiagram-IHSO6WYX-BbKh9nbL.js} +1 -1
- package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-BbKh9nbL.js.gz +0 -0
- package/ui-dist/assets/{i18n-CPjq_hQX.js → i18n-20rSH40D.js} +2 -2
- package/ui-dist/assets/i18n-20rSH40D.js.gz +0 -0
- package/ui-dist/assets/{i18n-provider-BYO9AhFy.js → i18n-provider-BPRq6S7O.js} +1 -1
- package/ui-dist/assets/info-DKCQHKI2-CTmlJdcH.js +1 -0
- package/ui-dist/assets/{infoDiagram-FWYZ7A6U-BZDL0NDJ.js → infoDiagram-FWYZ7A6U-DPffZXYh.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-BZ9WvJb2.js → ishikawaDiagram-FXEZZL3T-CBMsLwZ2.js} +1 -1
- package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-CBMsLwZ2.js.gz +0 -0
- package/ui-dist/assets/{journeyDiagram-5HDEW3XC-C3TZvKM8.js → journeyDiagram-5HDEW3XC-Mz5U4OzU.js} +1 -1
- package/ui-dist/assets/journeyDiagram-5HDEW3XC-Mz5U4OzU.js.gz +0 -0
- package/ui-dist/assets/{kanban-definition-HUTT4EX6-9FqauDEi.js → kanban-definition-HUTT4EX6-FXZq2k19.js} +1 -1
- package/ui-dist/assets/kanban-definition-HUTT4EX6-FXZq2k19.js.gz +0 -0
- package/ui-dist/assets/{katex-J8JuvgNl.js → katex-B26hhTOT.js} +15 -15
- package/ui-dist/assets/katex-B26hhTOT.js.gz +0 -0
- package/ui-dist/assets/katex-DbZC06Q5.js +1 -0
- package/ui-dist/assets/{keyboard-shortcuts-settings-page-1efEkGwq.js → keyboard-shortcuts-settings-page-CkQbSKwI.js} +1 -1
- package/ui-dist/assets/{line-Ca49mj80.js → line-BZwCgT9K.js} +1 -1
- package/ui-dist/assets/{linear-DlCeG66S.js → linear-CTe9mKUw.js} +1 -1
- package/ui-dist/assets/linear-CTe9mKUw.js.gz +0 -0
- package/ui-dist/assets/login-page-Dlyvp-81.js +1 -0
- package/ui-dist/assets/{login-page-DBqkVTVD.js → login-page-f8qQ4xKY.js} +1 -1
- package/ui-dist/assets/login-page-f8qQ4xKY.js.gz +0 -0
- package/ui-dist/assets/main-D2dWy8fM.css +1 -0
- package/ui-dist/assets/main-D2dWy8fM.css.gz +0 -0
- package/ui-dist/assets/main-i18n-catalog.config-DZ-5ollN.js +1 -0
- package/ui-dist/assets/main-i18n-catalog.config-DZ-5ollN.js.gz +0 -0
- package/ui-dist/assets/{main-CQ6GUYdX.js → main-ky5Efhq1.js} +2 -2
- package/ui-dist/assets/main-ky5Efhq1.js.gz +0 -0
- package/ui-dist/assets/{map-WMnNq9UV.js → map-Ci48ZwAp.js} +1 -1
- package/ui-dist/assets/map-Ci48ZwAp.js.gz +0 -0
- package/ui-dist/assets/{mcp-marketplace-page-CWAxBNaS.js → mcp-marketplace-page-FfIfEo6w.js} +1 -1
- package/ui-dist/assets/mcp-marketplace-page-FfIfEo6w.js.gz +0 -0
- package/ui-dist/assets/mcp-marketplace-page-sH7VptN_.js +1 -0
- package/ui-dist/assets/{mermaid-parser.core-B8xk4hpS.js → mermaid-parser.core-CzPD3U_z.js} +2 -2
- package/ui-dist/assets/mermaid-parser.core-CzPD3U_z.js.gz +0 -0
- package/ui-dist/assets/{mermaid.core-CFPiczKH.js → mermaid.core-geIMNPbV.js} +3 -3
- package/ui-dist/assets/mermaid.core-geIMNPbV.js.gz +0 -0
- package/ui-dist/assets/{mindmap-definition-LN4V7U3C-CnxA52L6.js → mindmap-definition-LN4V7U3C-xqlKxsr_.js} +1 -1
- package/ui-dist/assets/mindmap-definition-LN4V7U3C-xqlKxsr_.js.gz +0 -0
- package/ui-dist/assets/{model-config-page-DBcuZyRC.js → model-config-page-Bcm6-pCX.js} +1 -1
- package/ui-dist/assets/model-config-page-Bcm6-pCX.js.gz +0 -0
- package/ui-dist/assets/{ordinal-PgiFlfBJ.js → ordinal-MxnX8yhv.js} +1 -1
- package/ui-dist/assets/ordinal-MxnX8yhv.js.gz +0 -0
- package/ui-dist/assets/packet-7NZHBO7P-BbrI0ZlN.js +1 -0
- package/ui-dist/assets/panel-app-i18n-catalog.config-p3qAY_Eq.js +1 -0
- package/ui-dist/assets/{panelStandalone-BGA1s7JG.js → panelStandalone-By-6dDXS.js} +2 -2
- package/ui-dist/assets/panelStandalone-By-6dDXS.js.gz +0 -0
- package/ui-dist/assets/{pegDiagram-2B236MQR-A8oz7dTH.js → pegDiagram-2B236MQR-D50MFTN1.js} +1 -1
- package/ui-dist/assets/pegDiagram-2B236MQR-D50MFTN1.js.gz +0 -0
- package/ui-dist/assets/pie-RZYD4A2V-B7zE1ZIr.js +1 -0
- package/ui-dist/assets/{pieDiagram-ENE6RG2P-mtBnkYY0.js → pieDiagram-ENE6RG2P-CpA13oiC.js} +1 -1
- package/ui-dist/assets/pieDiagram-ENE6RG2P-CpA13oiC.js.gz +0 -0
- package/ui-dist/assets/{privacy-settings-page-DVC-aq1v.js → privacy-settings-page-B1sHLAc1.js} +1 -1
- package/ui-dist/assets/privacy-settings-page-B1sHLAc1.js.gz +0 -0
- package/ui-dist/assets/{projects-Cq0E3c7N.js → projects-O3GTERwP.js} +1 -1
- package/ui-dist/assets/projects-O3GTERwP.js.gz +0 -0
- package/ui-dist/assets/{provider-scoped-model-input-BGdZMWWa.js → provider-scoped-model-input-BQsugx1v.js} +1 -1
- package/ui-dist/assets/provider-scoped-model-input-BQsugx1v.js.gz +0 -0
- package/ui-dist/assets/{providers-config-page-B-IhHl6x.js → providers-config-page-BDEdHJbw.js} +1 -1
- package/ui-dist/assets/providers-config-page-BDEdHJbw.js.gz +0 -0
- package/ui-dist/assets/{pwa-C3kR9mdy.js → pwa-D_nZUwG0.js} +1 -1
- package/ui-dist/assets/pwa-D_nZUwG0.js.gz +0 -0
- package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-DE1VybGO.js → quadrantDiagram-ABIIQ3AL-CYCgaj4l.js} +1 -1
- package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-CYCgaj4l.js.gz +0 -0
- package/ui-dist/assets/radar-I7S5WNFK-1X_q11Ed.js +1 -0
- package/ui-dist/assets/railroad-3IZDKUUU-CIXnuFyE.js +1 -0
- package/ui-dist/assets/railroad-abnf-AHOZXSZD-D6ImKl2r.js +1 -0
- package/ui-dist/assets/railroad-ebnf-EBAXGLYW-2j9d3twU.js +1 -0
- package/ui-dist/assets/railroad-peg-LSFZ7HO6-DMVaJGbm.js +1 -0
- package/ui-dist/assets/{railroadDiagram-RFXS5EU6-u9EMg14B.js → railroadDiagram-RFXS5EU6-4LKDGlXN.js} +1 -1
- package/ui-dist/assets/railroadDiagram-RFXS5EU6-4LKDGlXN.js.gz +0 -0
- package/ui-dist/assets/remote-CFWp4wyH.js +1 -0
- package/ui-dist/assets/{requirementDiagram-TGXJPOKE-BAWHAqEi.js → requirementDiagram-TGXJPOKE-CxNOU0JH.js} +1 -1
- package/ui-dist/assets/requirementDiagram-TGXJPOKE-CxNOU0JH.js.gz +0 -0
- package/ui-dist/assets/{runtime-config-page-LmrB2q65.js → runtime-config-page-BHTKwgDi.js} +1 -1
- package/ui-dist/assets/runtime-config-page-BHTKwgDi.js.gz +0 -0
- package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-aDy-jdwF.js → sankeyDiagram-HTMAVEWB-DbCBDe2S.js} +1 -1
- package/ui-dist/assets/sankeyDiagram-HTMAVEWB-DbCBDe2S.js.gz +0 -0
- package/ui-dist/assets/{search-config-page-BIXmv5FY.js → search-config-page-DWKlMHgH.js} +1 -1
- package/ui-dist/assets/search-config-page-DWKlMHgH.js.gz +0 -0
- package/ui-dist/assets/{secrets-config-page-DU3fadrq.js → secrets-config-page-DiQL088Y.js} +1 -1
- package/ui-dist/assets/secrets-config-page-DiQL088Y.js.gz +0 -0
- package/ui-dist/assets/security-config-DmTDKKY4.js +1 -0
- package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-DwHC4mbX.js → sequenceDiagram-DBY2YBRQ-DA6W2BS_.js} +1 -1
- package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-DA6W2BS_.js.gz +0 -0
- package/ui-dist/assets/{service-apps-panel-Bshf3Wmq.js → service-apps-panel-CEnyYsQp.js} +1 -1
- package/ui-dist/assets/service-apps-panel-CEnyYsQp.js.gz +0 -0
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-oOMY0Fag.js → sizeCapture-X5ZJPWSS-T_q_d_VW.js} +1 -1
- package/ui-dist/assets/{src-CLPoo5iL.js → src-CYpUlx-4.js} +1 -1
- package/ui-dist/assets/{src-CLPoo5iL.js.gz → src-CYpUlx-4.js.gz} +0 -0
- package/ui-dist/assets/{stateDiagram-2N3HPSRC-B0Epk-VR.js → stateDiagram-2N3HPSRC-mi8z2G0a.js} +1 -1
- package/ui-dist/assets/stateDiagram-2N3HPSRC-mi8z2G0a.js.gz +0 -0
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-OlIMT57r.js +1 -0
- package/ui-dist/assets/{swimlanes-5IMT3BWC-T0w-Iuzf.js → swimlanes-5IMT3BWC-DkBEhWE4.js} +2 -2
- package/ui-dist/assets/swimlanes-5IMT3BWC-DkBEhWE4.js.gz +0 -0
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-sLThrh07.js +8 -0
- package/ui-dist/assets/{tag-chip-gAH1IOsZ.js → tag-chip-B1AYPOKL.js} +1 -1
- package/ui-dist/assets/{theme-provider-DE7m9jvf.js → theme-provider-DzvAi3pe.js} +1 -1
- package/ui-dist/assets/theme-provider-DzvAi3pe.js.gz +0 -0
- package/ui-dist/assets/{timeline-definition-FHXFAJF6-BEonB5Np.js → timeline-definition-FHXFAJF6-BoFmqBw1.js} +1 -1
- package/ui-dist/assets/timeline-definition-FHXFAJF6-BoFmqBw1.js.gz +0 -0
- package/ui-dist/assets/treeView-QDETBFTQ-CCFyazDE.js +1 -0
- package/ui-dist/assets/treemap-6X3UGDF4-D6wvq1Hz.js +1 -0
- package/ui-dist/assets/{use-config-Cyiw06-j.js → use-config-BEdbtpD4.js} +1 -1
- package/ui-dist/assets/use-config-BEdbtpD4.js.gz +0 -0
- package/ui-dist/assets/{use-desktop-capabilities-OKG96v4y.js → use-desktop-capabilities-BkuRd2cY.js} +1 -1
- package/ui-dist/assets/use-desktop-capabilities-BkuRd2cY.js.gz +0 -0
- package/ui-dist/assets/{vennDiagram-L72KCM5P-BDvcOCo2.js → vennDiagram-L72KCM5P-BlZ3Or5U.js} +1 -1
- package/ui-dist/assets/vennDiagram-L72KCM5P-BlZ3Or5U.js.gz +0 -0
- package/ui-dist/assets/wardley-OPB4EBWU-BRzaRyFf.js +1 -0
- package/ui-dist/assets/{wardleyDiagram-EHGQE667-jMLMgjzE.js → wardleyDiagram-EHGQE667-yDfr33i3.js} +1 -1
- package/ui-dist/assets/wardleyDiagram-EHGQE667-yDfr33i3.js.gz +0 -0
- package/ui-dist/assets/{xychartDiagram-FW5EYKEG-pzrpclEv.js → xychartDiagram-FW5EYKEG-mIXwIGAQ.js} +1 -1
- package/ui-dist/assets/xychartDiagram-FW5EYKEG-mIXwIGAQ.js.gz +0 -0
- package/ui-dist/index.html +24 -23
- package/ui-dist/index.html.gz +0 -0
- package/ui-dist/panel-standalone.html +6 -6
- package/ui-dist/panel-standalone.html.gz +0 -0
- package/dist/nextclaw-cli-app-CjtgVEdo.js.map +0 -1
- package/ui-dist/assets/abnfDiagram-VRR7QNED-Kzlh3ZEC.js.gz +0 -0
- package/ui-dist/assets/account-panel-UvHFa8Kl.js.gz +0 -0
- package/ui-dist/assets/aiden0z-pptx-renderer.es-k1xZLzeo.js.gz +0 -0
- package/ui-dist/assets/api-Dffeij78.js.gz +0 -0
- package/ui-dist/assets/app-data-DzaIMy4D.js.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-D3BuuOyZ.css +0 -1
- package/ui-dist/assets/app-presenter-provider-D3BuuOyZ.css.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js +0 -109
- package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js.gz +0 -0
- package/ui-dist/assets/appearance-settings-page-D8cWniw-.js.gz +0 -0
- package/ui-dist/assets/arc-CpivM836.js.gz +0 -0
- package/ui-dist/assets/architecture-TIHT7OUA-CVRF_cYQ.js +0 -1
- package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-ifjW1qjI.js.gz +0 -0
- package/ui-dist/assets/c4Diagram-LMCZKHZV-CpapRftp.js.gz +0 -0
- package/ui-dist/assets/channel-CBrWRr4N.js +0 -1
- package/ui-dist/assets/channels-list-page-B_fYP1Pn.js.gz +0 -0
- package/ui-dist/assets/chunk-2Q5K7J3B-B8mmRk7d.js +0 -1
- package/ui-dist/assets/chunk-32BRIVSS-BKBwdmKR.js.gz +0 -0
- package/ui-dist/assets/chunk-52WLFC77-BgZRCpDx.js.gz +0 -0
- package/ui-dist/assets/chunk-5JV3BV7I-B7QYgZU5.js.gz +0 -0
- package/ui-dist/assets/chunk-5TONJI2A-DjyQwgL2.js.gz +0 -0
- package/ui-dist/assets/chunk-7BUUIJ7U-D6bq2PKF.js.gz +0 -0
- package/ui-dist/assets/chunk-C7G6YPKG-8z3B6RUH.js.gz +0 -0
- package/ui-dist/assets/chunk-EX3LRPZG-BChuEPvO.js.gz +0 -0
- package/ui-dist/assets/chunk-FWX5IMBZ-fBFt0u3f.js.gz +0 -0
- package/ui-dist/assets/chunk-HOUHSVGY-MD0SpW5A.js.gz +0 -0
- package/ui-dist/assets/chunk-ICXQ74PX-DvCcw_hz.js.gz +0 -0
- package/ui-dist/assets/chunk-JG7HCLWE-B8zqBnU9.js.gz +0 -0
- package/ui-dist/assets/chunk-MOJQB5TN-gXbfqoqq.js.gz +0 -0
- package/ui-dist/assets/chunk-PUDLZKDR-DPILgOVY.js.gz +0 -0
- package/ui-dist/assets/chunk-Q4XR5HBZ-C0JJx7lW.js.gz +0 -0
- package/ui-dist/assets/chunk-R7FJI6CG-Bb8n616-.js.gz +0 -0
- package/ui-dist/assets/chunk-RYQCIY6F-1HOsOrSl.js.gz +0 -0
- package/ui-dist/assets/chunk-U6XO7XAA-BAFDVb1v.js.gz +0 -0
- package/ui-dist/assets/chunk-V7JOEXUC-8-g68lu5.js.gz +0 -0
- package/ui-dist/assets/chunk-VAUOI2AC-Cpml0inz.js +0 -1
- package/ui-dist/assets/chunk-WYO6CB5R-6wjFTXNP.js.gz +0 -0
- package/ui-dist/assets/chunk-XXDRQBXY-nCiqnCpF.js +0 -1
- package/ui-dist/assets/chunk-ZGVPDNZ5-BRTmSAhp.js.gz +0 -0
- package/ui-dist/assets/chunk-ZIRB5QZD-CH_1eoSV.js.gz +0 -0
- package/ui-dist/assets/classDiagram-OUVF2IWQ-C-DRqAaW.js +0 -1
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-DXCcZ42U.js +0 -1
- package/ui-dist/assets/config-split-page-6hHiiapl.js.gz +0 -0
- package/ui-dist/assets/confirm-dialog-ClT6iaj8.js.gz +0 -0
- package/ui-dist/assets/cose-bilkent-JH36ORCC-L7w_qScX.js.gz +0 -0
- package/ui-dist/assets/cynefin-VYW2F7L2-2SOTgxxC.js +0 -1
- package/ui-dist/assets/cynefinDiagram-TSTJHNR4-Bay7uDSR.js.gz +0 -0
- package/ui-dist/assets/dagre-CJ_hX8xv.js.gz +0 -0
- package/ui-dist/assets/dagre-VKFMJZFB-DDhk-2B3.js.gz +0 -0
- package/ui-dist/assets/desktop-capabilities-page-CB5pniTx.js.gz +0 -0
- package/ui-dist/assets/desktop-update-config-OuQV73gg.js.gz +0 -0
- package/ui-dist/assets/diagram-FQU43EPY-somFq5y8.js.gz +0 -0
- package/ui-dist/assets/diagram-G47NLZAW-hzgyQsPd.js.gz +0 -0
- package/ui-dist/assets/diagram-NH7WQ7WH-BkJ4gEQJ.js.gz +0 -0
- package/ui-dist/assets/diagram-OA4YK3LP-CS3ZkK4w.js.gz +0 -0
- package/ui-dist/assets/diagram-WEI45ONY-BApo-JHS.js.gz +0 -0
- package/ui-dist/assets/doc-browser-BFkslEzY.js +0 -1
- package/ui-dist/assets/doc-browser-Cu58uiEg.js.gz +0 -0
- package/ui-dist/assets/doc-browser-context-CekJxJFm.js.gz +0 -0
- package/ui-dist/assets/docx-preview-ByCKKIVT.js.gz +0 -0
- package/ui-dist/assets/ebnfDiagram-CCIWWBDH-DWjfeEie.js.gz +0 -0
- package/ui-dist/assets/erDiagram-Q63AITRT-DR7vWYHM.js.gz +0 -0
- package/ui-dist/assets/eventmodeling-45OFAUF4-CXZNG56U.js +0 -1
- package/ui-dist/assets/extensions-B5r-0jCq.js.gz +0 -0
- package/ui-dist/assets/flowDiagram-23GEKE2U-2065oyKr.js +0 -1
- package/ui-dist/assets/ganttDiagram-NO4QXBWP-E3l9tuaL.js.gz +0 -0
- package/ui-dist/assets/gitGraph-TEB2WS4Q-B0Ln3ZuK.js +0 -1
- package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-DiMvbHKf.js.gz +0 -0
- package/ui-dist/assets/i18n-CPjq_hQX.js.gz +0 -0
- package/ui-dist/assets/info-DKCQHKI2-B06uqGM4.js +0 -1
- package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-BZ9WvJb2.js.gz +0 -0
- package/ui-dist/assets/journeyDiagram-5HDEW3XC-C3TZvKM8.js.gz +0 -0
- package/ui-dist/assets/kanban-definition-HUTT4EX6-9FqauDEi.js.gz +0 -0
- package/ui-dist/assets/katex-J8JuvgNl.js.gz +0 -0
- package/ui-dist/assets/linear-DlCeG66S.js.gz +0 -0
- package/ui-dist/assets/login-page-DBqkVTVD.js.gz +0 -0
- package/ui-dist/assets/login-page-DjcRQLQe.js +0 -1
- package/ui-dist/assets/main-CLwCjK9U.css +0 -1
- package/ui-dist/assets/main-CLwCjK9U.css.gz +0 -0
- package/ui-dist/assets/main-CQ6GUYdX.js.gz +0 -0
- package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js +0 -1
- package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js.gz +0 -0
- package/ui-dist/assets/map-WMnNq9UV.js.gz +0 -0
- package/ui-dist/assets/mcp-marketplace-page-CWAxBNaS.js.gz +0 -0
- package/ui-dist/assets/mcp-marketplace-page-Ct090ceA.js +0 -1
- package/ui-dist/assets/mermaid-parser.core-B8xk4hpS.js.gz +0 -0
- package/ui-dist/assets/mermaid.core-CFPiczKH.js.gz +0 -0
- package/ui-dist/assets/mindmap-definition-LN4V7U3C-CnxA52L6.js.gz +0 -0
- package/ui-dist/assets/model-config-page-DBcuZyRC.js.gz +0 -0
- package/ui-dist/assets/ordinal-PgiFlfBJ.js.gz +0 -0
- package/ui-dist/assets/packet-7NZHBO7P-CHx-igbz.js +0 -1
- package/ui-dist/assets/panel-app-i18n-catalog.config-CQFujXqt.js +0 -1
- package/ui-dist/assets/panelStandalone-BGA1s7JG.js.gz +0 -0
- package/ui-dist/assets/pegDiagram-2B236MQR-A8oz7dTH.js.gz +0 -0
- package/ui-dist/assets/pie-RZYD4A2V-DOaMc-x9.js +0 -1
- package/ui-dist/assets/pieDiagram-ENE6RG2P-mtBnkYY0.js.gz +0 -0
- package/ui-dist/assets/privacy-settings-page-DVC-aq1v.js.gz +0 -0
- package/ui-dist/assets/projects-Cq0E3c7N.js.gz +0 -0
- package/ui-dist/assets/provider-scoped-model-input-BGdZMWWa.js.gz +0 -0
- package/ui-dist/assets/providers-config-page-B-IhHl6x.js.gz +0 -0
- package/ui-dist/assets/pwa-C3kR9mdy.js.gz +0 -0
- package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-DE1VybGO.js.gz +0 -0
- package/ui-dist/assets/radar-I7S5WNFK-CXsdndDk.js +0 -1
- package/ui-dist/assets/railroad-3IZDKUUU-DxgXdrYP.js +0 -1
- package/ui-dist/assets/railroad-abnf-AHOZXSZD-CR1tnyjz.js +0 -1
- package/ui-dist/assets/railroad-ebnf-EBAXGLYW-CjjxZR2U.js +0 -1
- package/ui-dist/assets/railroad-peg-LSFZ7HO6-DgVGJCHN.js +0 -1
- package/ui-dist/assets/railroadDiagram-RFXS5EU6-u9EMg14B.js.gz +0 -0
- package/ui-dist/assets/remote-Cnawibbg.js +0 -1
- package/ui-dist/assets/requirementDiagram-TGXJPOKE-BAWHAqEi.js.gz +0 -0
- package/ui-dist/assets/runtime-config-page-LmrB2q65.js.gz +0 -0
- package/ui-dist/assets/sankeyDiagram-HTMAVEWB-aDy-jdwF.js.gz +0 -0
- package/ui-dist/assets/search-config-page-BIXmv5FY.js.gz +0 -0
- package/ui-dist/assets/secrets-config-page-DU3fadrq.js.gz +0 -0
- package/ui-dist/assets/security-config-9s0i0I4N.js +0 -1
- package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-DwHC4mbX.js.gz +0 -0
- package/ui-dist/assets/service-apps-panel-Bshf3Wmq.js.gz +0 -0
- package/ui-dist/assets/stateDiagram-2N3HPSRC-B0Epk-VR.js.gz +0 -0
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-Ct4zTw8P.js +0 -1
- package/ui-dist/assets/swimlanes-5IMT3BWC-T0w-Iuzf.js.gz +0 -0
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CdmN0PBd.js +0 -8
- package/ui-dist/assets/theme-provider-DE7m9jvf.js.gz +0 -0
- package/ui-dist/assets/timeline-definition-FHXFAJF6-BEonB5Np.js.gz +0 -0
- package/ui-dist/assets/treeView-QDETBFTQ-Dad4_Wc7.js +0 -1
- package/ui-dist/assets/treemap-6X3UGDF4-9_GWWZsY.js +0 -1
- package/ui-dist/assets/use-config-Cyiw06-j.js.gz +0 -0
- package/ui-dist/assets/use-desktop-capabilities-OKG96v4y.js.gz +0 -0
- package/ui-dist/assets/vennDiagram-L72KCM5P-BDvcOCo2.js.gz +0 -0
- package/ui-dist/assets/wardley-OPB4EBWU-BXpvyee9.js +0 -1
- package/ui-dist/assets/wardleyDiagram-EHGQE667-jMLMgjzE.js.gz +0 -0
- package/ui-dist/assets/xychartDiagram-FW5EYKEG-pzrpclEv.js.gz +0 -0
- /package/ui-dist/assets/{array-BHDgItFN.js → array-D0DyKZdT.js} +0 -0
- /package/ui-dist/assets/{card-CS8su2Zh.js → card-BhfAZv5L.js} +0 -0
- /package/ui-dist/assets/{card-CS8su2Zh.js.gz → card-BhfAZv5L.js.gz} +0 -0
- /package/ui-dist/assets/{chunk-KEIR6QF5-DstBw0Hk.js → chunk-KEIR6QF5-CuZFOa6q.js} +0 -0
- /package/ui-dist/assets/{chunk-KEIR6QF5-DstBw0Hk.js.gz → chunk-KEIR6QF5-CuZFOa6q.js.gz} +0 -0
- /package/ui-dist/assets/{chunk-Y2CYZVJY-CA3ymQuH.js → chunk-Y2CYZVJY-Frut-1TF.js} +0 -0
- /package/ui-dist/assets/{config-hints-CBPHrfYk.js → config-hints-B_C9DAp5.js} +0 -0
- /package/ui-dist/assets/{cytoscape.esm-C7xr90o_.js → cytoscape.esm-BibuhnZD.js} +0 -0
- /package/ui-dist/assets/{cytoscape.esm-C7xr90o_.js.gz → cytoscape.esm-BibuhnZD.js.gz} +0 -0
- /package/ui-dist/assets/{defaultLocale-BG1oDVag.js → defaultLocale-q7sRUXPc.js} +0 -0
- /package/ui-dist/assets/{defaultLocale-BG1oDVag.js.gz → defaultLocale-q7sRUXPc.js.gz} +0 -0
- /package/ui-dist/assets/{dist-Cnhwure9.js → dist-DhMddrrH.js} +0 -0
- /package/ui-dist/assets/{dist-Cnhwure9.js.gz → dist-DhMddrrH.js.gz} +0 -0
- /package/ui-dist/assets/{form-actions-AIdXOoCL.js → form-actions-BRESe-m_.js} +0 -0
- /package/ui-dist/assets/{graphlib-CNMGfuTb.js → graphlib-BM63WsW3.js} +0 -0
- /package/ui-dist/assets/{graphlib-CNMGfuTb.js.gz → graphlib-BM63WsW3.js.gz} +0 -0
- /package/ui-dist/assets/{init-wQIZuRSH.js → init-CRMkf9sL.js} +0 -0
- /package/ui-dist/assets/{jszip.min-D_AtKL_8.js → jszip.min-6thm2J_a.js} +0 -0
- /package/ui-dist/assets/{jszip.min-D_AtKL_8.js.gz → jszip.min-6thm2J_a.js.gz} +0 -0
- /package/ui-dist/assets/{panel-app-maumVhbl.js → panel-app-B39rJPj8.js} +0 -0
- /package/ui-dist/assets/{panel-app-maumVhbl.js.gz → panel-app-B39rJPj8.js.gz} +0 -0
- /package/ui-dist/assets/{path-N-C4MRP0.js → path-BFMmafCM.js} +0 -0
- /package/ui-dist/assets/{path-N-C4MRP0.js.gz → path-BFMmafCM.js.gz} +0 -0
- /package/ui-dist/assets/{provider-models-5PGHb6mP.js → provider-models-hrHMcHqg.js} +0 -0
- /package/ui-dist/assets/{provider-models-5PGHb6mP.js.gz → provider-models-hrHMcHqg.js.gz} +0 -0
- /package/ui-dist/assets/{rough.esm-BeWA068d.js → rough.esm-5Tjchx1D.js} +0 -0
- /package/ui-dist/assets/{rough.esm-BeWA068d.js.gz → rough.esm-5Tjchx1D.js.gz} +0 -0
- /package/ui-dist/assets/{skeleton-BL9h32W7.js → skeleton-Drvn83YW.js} +0 -0
- /package/ui-dist/assets/{use-panel-app-scroll-restoration-DsV1IJx-.js → use-panel-app-scroll-restoration-ZnicIfo3.js} +0 -0
- /package/ui-dist/assets/{use-panel-app-scroll-restoration-DsV1IJx-.js.gz → use-panel-app-scroll-restoration-ZnicIfo3.js.gz} +0 -0
- /package/ui-dist/assets/{xlsx-CwUXNtD3.js → xlsx-BC8ibjXK.js} +0 -0
- /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
|
-
|
|
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
|
|
package/dist/cli/app/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as repairPackagedPortableRunnerPermissions, t as createNextclawDistribution } from "../../distribution-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
44
|
+
//# sourceMappingURL=distribution-kH-YiPGh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution-
|
|
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
|
-
|
|
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,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 {
|
|
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-
|
|
6749
|
+
//# sourceMappingURL=nextclaw-cli-app-Mz2hYz_-.js.map
|