decocms 2.306.8 → 2.306.9
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/dist/client/assets/{AlertCircle-BTzXzMwa.js → AlertCircle-DJf7WJW3.js} +1 -1
- package/dist/client/assets/{ArrowNarrowLeft-D2yH9wXQ.js → ArrowNarrowLeft-zhth65sS.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-Oalb5bG5.js → ArrowUpRight-B3qf65r_.js} +1 -1
- package/dist/client/assets/{Check-D4yu1L9M.js → Check-BA7p_1wq.js} +1 -1
- package/dist/client/assets/{CheckCircle-Ce90skz0.js → CheckCircle-Y9PieZLB.js} +1 -1
- package/dist/client/assets/{ChevronDown-BqGwceCn.js → ChevronDown-CHAav7qy.js} +1 -1
- package/dist/client/assets/{ChevronRight-BRV7Tdzz.js → ChevronRight-2ozRd8ql.js} +1 -1
- package/dist/client/assets/{ChevronUp-pbRiDYbB.js → ChevronUp-DiTrXBul.js} +1 -1
- package/dist/client/assets/{Container-Cf08ks6f.js → Container-C2bhieKl.js} +1 -1
- package/dist/client/assets/{DotsVertical-Cb1IeswQ.js → DotsVertical-EPasiNNs.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DfeIVyGK.js → LinkExternal01-BPHdX5PH.js} +1 -1
- package/dist/client/assets/{Lock01-B6CuPSqy.js → Lock01-BGF0eORu.js} +1 -1
- package/dist/client/assets/{Palette-6MGVk9XZ.js → Palette-C_hdzDFv.js} +1 -1
- package/dist/client/assets/{Play-Z9TLXhXZ.js → Play-F9KGb4fS.js} +1 -1
- package/dist/client/assets/{Plus-BWFmeYbA.js → Plus-yWDQ_tpZ.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-DdNBG9uq.js → RefreshCcw01-02Zm-r_b.js} +1 -1
- package/dist/client/assets/{SearchMd-Bk2WMaal.js → SearchMd-KthT6Z0D.js} +1 -1
- package/dist/client/assets/{Settings02-DV_JgL_i.js → Settings02-o9kWs5LM.js} +1 -1
- package/dist/client/assets/{Shield01-DabBYOJe.js → Shield01-C6IvOcka.js} +1 -1
- package/dist/client/assets/{Star01-EsNS3h_Z.js → Star01-DfneWwne.js} +1 -1
- package/dist/client/assets/{Sun-BSBNF16W.js → Sun-jEEtT5QL.js} +1 -1
- package/dist/client/assets/{Tool01-BLP2PhNo.js → Tool01-Ba51oSqA.js} +1 -1
- package/dist/client/assets/{Trash01-BrCWXUwU.js → Trash01-phS8Heeq.js} +1 -1
- package/dist/client/assets/{User01-YnNa4o8H.js → User01-ZJzkhpRI.js} +1 -1
- package/dist/client/assets/{Users03-ju7GWCNc.js → Users03-BpQp0OZp.js} +1 -1
- package/dist/client/assets/{X-Bwb7_m5v.js → X-C7tkmqiA.js} +1 -1
- package/dist/client/assets/{XCircle-CH3QyMaX.js → XCircle-D-iHz9mr.js} +1 -1
- package/dist/client/assets/{XClose-CWzVSlUZ.js → XClose-DGH-dkmK.js} +1 -1
- package/dist/client/assets/{Zap-ByRL5ggZ.js → Zap-B3d9PZiM.js} +1 -1
- package/dist/client/assets/{ZapSquare-DwXwFOB5.js → ZapSquare-zYT4mArq.js} +1 -1
- package/dist/client/assets/{accordion-DEfiI4_u.js → accordion-hHFtU32i.js} +1 -1
- package/dist/client/assets/{agent-icon-BWW-_spm.js → agent-icon-CJE3IrTn.js} +1 -1
- package/dist/client/assets/{agents-list-DtSKcauO.js → agents-list-vYYge1ev.js} +1 -1
- package/dist/client/assets/ai-providers-CqQQNPte.js +1 -0
- package/dist/client/assets/{alert-dialog-CIRyCiSh.js → alert-dialog-BX6tjxLQ.js} +1 -1
- package/dist/client/assets/{auth-catchall-DM2HSAyx.js → auth-catchall-tLsDaZib.js} +1 -1
- package/dist/client/assets/{automation-list-row-BZQnmXsD.js → automation-list-row-CcwE53y-.js} +1 -1
- package/dist/client/assets/{automations-BpoAkXQ6.js → automations-BESFBIp2.js} +1 -1
- package/dist/client/assets/{avatar-O6nD_RVH.js → avatar-qtN1d68D.js} +1 -1
- package/dist/client/assets/{badge-1GzX8YfJ.js → badge-B9X-6Gl1.js} +1 -1
- package/dist/client/assets/{brand-context-pSsdhU7u.js → brand-context-XewU7lcG.js} +1 -1
- package/dist/client/assets/{card-YRPYO7rK.js → card-BoqhySt6.js} +1 -1
- package/dist/client/assets/{chat-context-BXGy7Agh.js → chat-context-CKn0S8Zn.js} +1 -1
- package/dist/client/assets/{checkbox-BtvQbCay.js → checkbox-CsbRNJyh.js} +1 -1
- package/dist/client/assets/{collection-detail--ucxh4J-.js → collection-detail-CNKa10ok.js} +1 -1
- package/dist/client/assets/{collection-display-button-CMOfNtao.js → collection-display-button-DKtSFWra.js} +1 -1
- package/dist/client/assets/{collection-search-CYChlQpy.js → collection-search-B3qdCdab.js} +1 -1
- package/dist/client/assets/{collection-search-mbr97YEK.js → collection-search-Ce1lQnUu.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BnAWIjfr.js → collection-table-wrapper-Bd9ZSFN9.js} +1 -1
- package/dist/client/assets/{collection-tabs-CkdgJkBV.js → collection-tabs-f6wZXNju.js} +1 -1
- package/dist/client/assets/{collections-BFntmLot.js → collections-DW4PTltg.js} +1 -1
- package/dist/client/assets/{command-Cbz_0bPm.js → command-COSC6-sU.js} +1 -1
- package/dist/client/assets/{connection-card-BLDKB8T1.js → connection-card-CZXyfhfz.js} +1 -1
- package/dist/client/assets/{connection-detail-BFIdeQRn.js → connection-detail-j7Z5rP7l.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-CSJOop0l.js → connection-form-helpers-BlYNQpCT.js} +1 -1
- package/dist/client/assets/{connections-BW08Tw6P.js → connections-BV8XJOt_.js} +1 -1
- package/dist/client/assets/{constants-O6TOd6Fi.js → constants-BVAyWr7s.js} +1 -1
- package/dist/client/assets/{constants-CyYXtNQt.js → constants-DGVET5nO.js} +1 -1
- package/dist/client/assets/{dialog-BapANLA4.js → dialog-Hnl5R_ro.js} +1 -1
- package/dist/client/assets/{domain-settings-BiGD_AWa.js → domain-settings-C-IlkGnr.js} +1 -1
- package/dist/client/assets/{drawer-DXfcxG35.js → drawer-Crup1SLH.js} +1 -1
- package/dist/client/assets/{dropdown-menu-8r0P5O89.js → dropdown-menu-V4M0HjsW.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-88jqqJ-n.js → dynamic-plugin-layout-8c6x-ky8.js} +1 -1
- package/dist/client/assets/{empty-state-CxaKSceI.js → empty-state-CZ3CJw7j.js} +1 -1
- package/dist/client/assets/{empty-state-D31vnJxY.js → empty-state-D5_lJgOy.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BAmE4x-0.js → extract-connection-data-em000wPy.js} +1 -1
- package/dist/client/assets/{features-Zs1cJ0se.js → features-DAVmQLQk.js} +1 -1
- package/dist/client/assets/{form-vm22t8bs.js → form-C7tw7wIR.js} +1 -1
- package/dist/client/assets/{general-DOQdXWNJ.js → general-DnnDmUeP.js} +1 -1
- package/dist/client/assets/{index-DSEbXUmT.js → index-BFRqxr4t.js} +1 -1
- package/dist/client/assets/{index-DnMFHGHl.js → index-BOzqanlB.js} +1 -1
- package/dist/client/assets/{index-C3KqPz7f.js → index-Bbymo0Ib.js} +1 -1
- package/dist/client/assets/index-Bg9RJYuW.js +1 -0
- package/dist/client/assets/{index-DCtZqQ0W.js → index-CA3OM7o_.js} +1 -1
- package/dist/client/assets/{index-CtJ1_vQP.js → index-CnknCe9i.js} +2 -2
- package/dist/client/assets/{index-4ADaRsb3.js → index-CoJ8j1Pw.js} +1 -1
- package/dist/client/assets/{index-BZSJm92U.js → index-DNL4AbVG.js} +1 -1
- package/dist/client/assets/{index-CZoa5Voq.js → index-DUQBUyCZ.js} +1 -1
- package/dist/client/assets/{index-B1K3k56c.js → index-DkII30Yp.js} +1 -1
- package/dist/client/assets/{index-Irwc0F9z.js → index-Dq2z-GHI.js} +1 -1
- package/dist/client/assets/{index-CDWEA7tA.js → index-DtUD0Pyz.js} +3 -3
- package/dist/client/assets/{index-cMeVTxue.js → index-HuDOZoSO.js} +1 -1
- package/dist/client/assets/{index-COg7cSsl.js → index-RIIjlnIA.js} +1 -1
- package/dist/client/assets/{index-CHlpZld0.js → index-XN9sCkdo.js} +1 -1
- package/dist/client/assets/{index-Dy9FasiB.js → index-pVdenInH.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-BORSReP2.js → infiniteQueryObserver-BpzCmbvi.js} +1 -1
- package/dist/client/assets/{input-DzKH4IoC.js → input-tSjlegEI.js} +1 -1
- package/dist/client/assets/{integration-icon-DZ1DDayM.js → integration-icon-BIIE53tx.js} +1 -1
- package/dist/client/assets/{label-B1j7QJO9.js → label-BPDMOqL-.js} +1 -1
- package/dist/client/assets/{layout-CgSQP9Dz.js → layout-CdewzpDg.js} +1 -1
- package/dist/client/assets/{lean-canvas-recruit-modal-CkuRnY-q.js → lean-canvas-recruit-modal-vF31gMjX.js} +1 -1
- package/dist/client/assets/{login-BFVakp9W.js → login-BoZD0ihV.js} +1 -1
- package/dist/client/assets/{members-BvtGRXTq.js → members-Cu6j2bC_.js} +1 -1
- package/dist/client/assets/{monaco-editor-DbLGolnd.js → monaco-editor-BkaEDfnn.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-Bs9q7htN.js → monitoring-stats-row-B4VSVC5f.js} +1 -1
- package/dist/client/assets/{oauth-callback-C2IfOXdE.js → oauth-callback-BZ22lnb7.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DjdeIGJy.js → oauth-callback-ai-provider-DdNo-cUU.js} +1 -1
- package/dist/client/assets/{onboarding-qQL2AHJp.js → onboarding-BsxXp_91.js} +1 -1
- package/dist/client/assets/{org-layout-r-dIMXY7.js → org-layout-C5IzT9XM.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-BdbYhknE.js → org-plugin-layout-rnBVYx1J.js} +1 -1
- package/dist/client/assets/{pair-BeVk0nw4.js → pair-CgrOS8jZ.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-tnsMkLWl.js → plugin-empty-state-DrUsi_Xi.js} +1 -1
- package/dist/client/assets/{plugin-header-DlR3Hsv1.js → plugin-header-CdV-nsX3.js} +1 -1
- package/dist/client/assets/{plugin-layout-j_5ixQWh.js → plugin-layout-CazyvxCF.js} +1 -1
- package/dist/client/assets/{popover-BoJSCjqj.js → popover-B72j1a-i.js} +1 -1
- package/dist/client/assets/{profile-DJw46v6U.js → profile-Cu0ySZu7.js} +1 -1
- package/dist/client/assets/{project-app-view-CqGwq86p.js → project-app-view-DrBetUBZ.js} +1 -1
- package/dist/client/assets/registry-BcpPcvh_.js +2 -0
- package/dist/client/assets/{registry-layout-CKKMYc0F.js → registry-layout-CjG7kzKY.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BOqEO0UW.js → required-auth-layout-DesCgYHR.js} +1 -1
- package/dist/client/assets/{reset-password-DC2CZqgK.js → reset-password-eRneDfhd.js} +1 -1
- package/dist/client/assets/{roles-B7M_sNQI.js → roles-BOPJuCtk.js} +1 -1
- package/dist/client/assets/{scroll-area-CVP2hanW.js → scroll-area-B7p5KGay.js} +1 -1
- package/dist/client/assets/{search-input-DBJx5Puk.js → search-input-BkMpxSNZ.js} +1 -1
- package/dist/client/assets/{select-BL-3WYG3.js → select-Cgq5fB25.js} +1 -1
- package/dist/client/assets/{select-model-CBeAOuD4.js → select-model-BrcDDMDY.js} +1 -1
- package/dist/client/assets/{settings-layout-D4-CafDE.js → settings-layout-DnlWM3l_.js} +1 -1
- package/dist/client/assets/{settings-section-sY44gYa3.js → settings-section-BnPqXFEQ.js} +1 -1
- package/dist/client/assets/{shell-layout-BRqsQqla.js → shell-layout-KvQC2n8R.js} +1 -1
- package/dist/client/assets/{skeleton-BWfslVYc.js → skeleton-DIbgbTEL.js} +1 -1
- package/dist/client/assets/{sso-CqR7Oikv.js → sso-CKV2Ny8h.js} +1 -1
- package/dist/client/assets/{store-QjnVaNvS.js → store-OiRvkTn1.js} +1 -1
- package/dist/client/assets/store-registry-CcoZihF8.js +2 -0
- package/dist/client/assets/{switch-ClIsCuo0.js → switch-DHlXaCRu.js} +1 -1
- package/dist/client/assets/{table-DLr2fSXp.js → table-DM5YCF_t.js} +1 -1
- package/dist/client/assets/{tabs-CEhOvCGw.js → tabs-DP8p-QKj.js} +1 -1
- package/dist/client/assets/{task-status-C-SQfZZK.js → task-status-RjLfrU9E.js} +1 -1
- package/dist/client/assets/{textarea-BQD2K7xE.js → textarea-BKxnYjv4.js} +1 -1
- package/dist/client/assets/{toggle-group-i71R22i3.js → toggle-group-BTIHjGuh.js} +1 -1
- package/dist/client/assets/{tools-list-CPm-Mx4D.js → tools-list-DltD98In.js} +1 -1
- package/dist/client/assets/{tooltip-BTEnXfpw.js → tooltip-VTeNtMCR.js} +1 -1
- package/dist/client/assets/{types-lb3PNUQc.js → types-DXN89wPs.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BKH_isZv.js → use-ai-providers-Dn3Z7IEd.js} +1 -1
- package/dist/client/assets/{use-collections-VlH2NrqV.js → use-collections-CiD-L_rq.js} +1 -1
- package/dist/client/assets/{use-connection-M1xDmD9i.js → use-connection-JNwwjcGV.js} +1 -1
- package/dist/client/assets/{use-copy-DEJBJAsZ.js → use-copy-BC2pt5R_.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BL0xa08p.js → use-create-virtual-mcp-BaV_MWOd.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DJj5fuFt.js → use-debounced-autosave-BZkVf5Bt.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Bb2NleBN.js → use-decopilot-events-CNFY9Cdo.js} +1 -1
- package/dist/client/assets/{use-delete-connection-Bib86QGR.js → use-delete-connection-B92EkvSW.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-D8nIolCd.js → use-infinite-scroll-DxHMXvd2.js} +1 -1
- package/dist/client/assets/{use-list-state-BYi_uUtE.js → use-list-state-CC6sLPth.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CtUqFvLD.js → use-mcp-tools-CVArZMz4.js} +1 -1
- package/dist/client/assets/{use-members-CdkSabwq.js → use-members-DwBHQoXS.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-D91A1ehg.js → use-navigate-to-agent-CBT4EeEo.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CANxngbZ.js → use-org-auth-client-Btoi24Ng.js} +1 -1
- package/dist/client/assets/{use-org-sso-KaCvgTMV.js → use-org-sso-BraRussC.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BXlhN5BZ.js → use-organization-roles-D_UI-fW0.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CCxU4osF.js → use-organization-settings-Dxy82qy3.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CcXpK-ys.js → use-registry-connections-Dutuf-7C.js} +1 -1
- package/dist/client/assets/{use-status-sounds-Cwi7Sfh7.js → use-status-sounds-D0gU5bqv.js} +1 -1
- package/dist/client/assets/{use-tasks-D03EtFvf.js → use-tasks-dDV8jhdD.js} +1 -1
- package/dist/client/assets/{use-view-mode-CQIRYhjw.js → use-view-mode-CNrwjFk2.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CX5iadV3.js → use-virtual-mcp-DYwCZbrQ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DgNRpfvJ.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-olKcjkDq.js +1 -0
- package/dist/client/assets/{user-C8zZ-7QW.js → user-kEnfgZB9.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Cw5HKJog.js → view-mode-toggle-CrpJwZiO.js} +1 -1
- package/dist/client/assets/{workflow-Det6DT4b.js → workflow-BXznQ79f.js} +1 -1
- package/dist/client/assets/workflow-detail-DeJ9MrPo.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -8
- package/dist/server/node_modules/cli-boxes/boxes.json +82 -0
- package/dist/server/node_modules/cli-boxes/index.d.ts +127 -0
- package/dist/server/node_modules/cli-boxes/index.js +6 -0
- package/dist/server/node_modules/cli-boxes/license +9 -0
- package/dist/server/node_modules/cli-boxes/package.json +42 -0
- package/dist/server/node_modules/cli-boxes/readme.md +115 -0
- package/dist/server/node_modules/cli-spinners/index.d.ts +139 -0
- package/dist/server/node_modules/cli-spinners/index.js +11 -0
- package/dist/server/node_modules/cli-spinners/license +9 -0
- package/dist/server/node_modules/cli-spinners/package.json +56 -0
- package/dist/server/node_modules/cli-spinners/readme.md +74 -0
- package/dist/server/node_modules/cli-spinners/spinners.json +1697 -0
- package/dist/server/node_modules/{postgres-date/license → stack-utils/LICENSE.md} +1 -1
- package/dist/server/node_modules/stack-utils/index.js +344 -0
- package/dist/server/node_modules/stack-utils/package.json +39 -0
- package/dist/server/node_modules/stack-utils/readme.md +143 -0
- package/dist/server/server.js +0 -7
- package/package.json +1 -1
- package/dist/client/assets/ai-providers-Dmv17i-r.js +0 -1
- package/dist/client/assets/index-sD08ZTU7.js +0 -1
- package/dist/client/assets/registry-CRDkHUvw.js +0 -2
- package/dist/client/assets/store-registry-CEd7y-Xb.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CgSxuvH6.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CH8re_uO.js +0 -1
- package/dist/client/assets/workflow-detail-BeFzNTls.js +0 -1
- package/dist/server/node_modules/postgres-bytea/index.js +0 -33
- package/dist/server/node_modules/postgres-bytea/license +0 -21
- package/dist/server/node_modules/postgres-bytea/package.json +0 -34
- package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
- package/dist/server/node_modules/postgres-date/index.js +0 -116
- package/dist/server/node_modules/postgres-date/package.json +0 -33
- package/dist/server/node_modules/postgres-date/readme.md +0 -49
- package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
- package/dist/server/node_modules/postgres-interval/index.js +0 -125
- package/dist/server/node_modules/postgres-interval/license +0 -21
- package/dist/server/node_modules/postgres-interval/package.json +0 -36
- package/dist/server/node_modules/postgres-interval/readme.md +0 -48
- package/dist/server/node_modules/xtend/.jshintrc +0 -30
- package/dist/server/node_modules/xtend/LICENSE +0 -20
- package/dist/server/node_modules/xtend/README.md +0 -32
- package/dist/server/node_modules/xtend/immutable.js +0 -19
- package/dist/server/node_modules/xtend/mutable.js +0 -17
- package/dist/server/node_modules/xtend/package.json +0 -55
- package/dist/server/node_modules/xtend/test.js +0 -103
package/dist/server/cli.js
CHANGED
|
@@ -1643,7 +1643,7 @@ AS SELECT
|
|
|
1643
1643
|
FROM monitoring_metrics
|
|
1644
1644
|
GROUP BY organization_id, name, bucket, connection_id, tool_name, status
|
|
1645
1645
|
`}),console.log("[clickhouse-schema] monitoring_metrics_rollup_1m_mv view ready")}finally{await G.close()}}catch(Y){console.error("[clickhouse-schema] Failed to create rollup DDL (queries will fall back to raw table):",Y)}}async function iA1(X){let Y={...process.env},G=e$1(X,Y),Q=G.settings.encryptionKey;console.log(`[settings] ENCRYPTION_KEY = ${JSON.stringify(Q)} (${Q.length} chars)`);let{ensureServices:J}=await Promise.resolve().then(() => (l$1(),u$1)),{outputs:W,services:Z}=await J({home:G.settings.dataDir,externalDatabaseUrl:G.externalDatabaseUrl,externalNatsUrl:G.externalNatsUrl});if(!G.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (YW0(),Wg4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (GU(),Zg4)),{migrateToLatest:U}=await Promise.resolve().then(() => (Ns4(),Bs4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => z16);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return xt1($),{settings:$,services:Z.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:Z.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var kN0=w(()=>{yt1();l9()});var tA1={};T0(tA1,{updateService:()=>Ga,toggleViewMode:()=>vN0,toggleVibeState:()=>fN0,toggleLogFlow:()=>_N0,subscribeCliState:()=>vX1,setVibe:()=>$a5,setTuiConsoleIntercepted:()=>pA1,setServerUrl:()=>fX1,setMigrationsDone:()=>_X1,setEnv:()=>bX1,setDevMode:()=>Za5,setDataDir:()=>Wa5,isTuiConsoleIntercepted:()=>nA1,getCliState:()=>CX1,addLogEntry:()=>Zz});function PU(){for(let X of CN0)X()}function CX1(){return e9}function vX1(X){return CN0.add(X),()=>CN0.delete(X)}function Ga(X){e9={...e9,services:e9.services.map((Y)=>Y.name===X.name?X:Y)},PU()}function _X1(){e9={...e9,migrationsStatus:"done"},PU()}function fX1(X){e9={...e9,serverUrl:X},PU()}function bX1(X){e9={...e9,env:X},PU()}function Zz(X){let Y=[...e9.logs,X];e9={...e9,logs:Y.length>500?Y.slice(-500):Y},PU()}function Za5(){e9={...e9,services:[...e9.services,{name:"Vite",status:"pending",port:0}]},PU()}function vN0(){e9={...e9,viewMode:e9.viewMode==="requests"?"config":"requests"},PU()}function _N0(){e9={...e9,logFlow:!e9.logFlow},PU()}function Wa5(X){e9={...e9,dataDir:X},PU()}function $a5(X){e9={...e9,vibe:X},PU()}function fN0(){e9={...e9,vibe:!e9.vibe},PU()}function pA1(X){O16=X}function nA1(){return O16}var e9,CN0,O16=!1;var Wz=w(()=>{e9={services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,env:null,logs:[],viewMode:"requests",logFlow:!1,vibe:!1,dataDir:null},CN0=new Set});import{createServer as D16}from"net";function Ka5(X){return new Promise((Y)=>{let G=D16();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function aA1(X){if(await Ka5(X))return X;let Y=await new Promise((G,Q)=>{let J=D16();J.once("error",Q),J.listen(0,"0.0.0.0",()=>{let W=J.address(),Z=typeof W==="object"&&W?W.port:0;J.close(()=>G(Z))})});return console.warn(`Port ${X} is in use, using port ${Y} instead.`),Y}var bN0=()=>{};var yN0={};T0(yN0,{startDevServer:()=>Fa5});import{join as Ha5}from"path";function w16(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function L16(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
|
|
1646
|
-
`);Q=W.pop()??"";for(let Z of W){let $=w16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=w16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Fa5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Ga({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ha5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)L16(U.stdout),L16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Ga({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();Wz();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as P16,jsxs as rA1}from"react/jsx-runtime";function E16(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function Na5(X,Y){if(Ua5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ba5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>E16(W)).join(", "),color:"cyan"}}let Q=E16(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function za5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function q16({env:X}){let Y=za5(X);return P16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(gN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=Na5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),P16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ua5,Ba5;var A16=w(()=>{Ua5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ba5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var T16=w(()=>{uN0={name:"decocms",version:"2.306.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as qU,Text as RX}from"ink";import{Spinner as Da5}from"@inkjs/ui";import{useSyncExternalStore as I16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function qa5(X,Y){if(!X||!Pa5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function V16({status:X}){if(X==="pending")return TY(Da5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function j16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=I16(cm0,dm0),Z=I16(rm0,am0);return sQ(qU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(qU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,Ea5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=qa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(qU,{flexDirection:"column",marginTop:1,children:[wa5.map(($,K)=>TY(RX,{color:La5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(qU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(qU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(qU,{gap:2,children:[X.map(($)=>sQ(qU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(V16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(V16,{status:Y})]})]}),TY(qU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(qU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var wa5,La5,lN0,Ea5=30,Pa5;var M16=w(()=>{T16();Vt1();Ct1();wa5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],La5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Pa5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Aa5}from"react";function Ta5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function Ia5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function R16(){return Aa5(Ia5,Ta5)}var oA1;var S16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Va5,Text as yX1}from"ink";import{useSyncExternalStore as ja5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function Ma5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function k16({logs:X,headerHeight:Y}){let{rows:G}=R16(),{logFlow:Q}=ja5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Va5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(yX1,{children:[dN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(yX1,{color:Ma5(Z.status),children:Z.status}),dN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var C16=w(()=>{Wz();S16()});var cN0={};T0(cN0,{App:()=>fa5});import{Box as Ra5,Text as Sa5,useInput as ka5}from"ink";import{useSyncExternalStore as Ca5}from"react";import{jsx as sA1,jsxs as ba5}from"react/jsx-runtime";function fa5({home:X}){let Y=Ca5(vX1,CX1);return ka5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),ba5(Ra5,{flexDirection:"column",children:[sA1(j16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(q16,{env:Y.env}):sA1(Sa5,{dimColor:!0,children:"Loading configuration..."}):sA1(k16,{logs:Y.logs,headerHeight:Y.vibe?_a5:va5})]})}var va5=15,_a5=19;var iN0=w(()=>{A16();M16();C16();Wz();bd()});function v16(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var bj=k((la5)=>{la5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpAuthLocation||(la5.HttpAuthLocation={}));la5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpApiKeyAuthLocation||(la5.HttpApiKeyAuthLocation={}));la5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(la5.EndpointURLScheme||(la5.EndpointURLScheme={}));la5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(la5.AlgorithmId||(la5.AlgorithmId={}));var ya5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>la5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>la5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},xa5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},ha5=(X)=>{return ya5(X)},ga5=(X)=>{return xa5(X)};la5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(la5.FieldPosition||(la5.FieldPosition={}));var ua5="__smithy_context";la5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(la5.IniSectionType||(la5.IniSectionType={}));la5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(la5.RequestHandlerProtocol||(la5.RequestHandlerProtocol={}));la5.SMITHY_CONTEXT_KEY=ua5;la5.getDefaultClientConfiguration=ha5;la5.resolveDefaultRuntimeConfig=ga5});var u7=k((ra5)=>{var ia5=bj(),pa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},na5=(X)=>{return{httpHandler:X.httpHandler()}};class _16{name;kind;values;constructor({name:X,kind:Y=ia5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class f16{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class eA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ta5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return eA1.clone(this)}}function ta5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class b16{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function aa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ra5.Field=_16;ra5.Fields=f16;ra5.HttpRequest=eA1;ra5.HttpResponse=b16;ra5.getHttpHandlerExtensionConfiguration=pa5;ra5.isValidHostname=aa5;ra5.resolveHttpHandlerRuntimeConfig=na5});function Jr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&y16.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var y16,Zr5,x16=(X)=>({applyToStack:(Y)=>{Y.add(Jr5(X),Zr5)}});var h16=w(()=>{y16=X1(u7(),1);Zr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,yj,YT1,E9,g16,hX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(g16||(g16={}));hX1=E9.CRC32});var kq,Qa=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Wr5="AWS_REQUEST_CHECKSUM_CALCULATION",$r5="request_checksum_calculation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Qa(X,Wr5,wH,kq.ENV),configFileSelector:(X)=>Qa(X,$r5,wH,kq.CONFIG),default:XT1}});var Kr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Hr5="response_checksum_validation",m16;var d16=w(()=>{LH();sN0();m16={environmentVariableSelector:(X)=>Qa(X,Kr5,yj,kq.ENV),configFileSelector:(X)=>Qa(X,Hr5,yj,kq.CONFIG),default:YT1}});var Xz0=k((Er5)=>{var Fr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Ur5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Br5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Nr5=[500,502,503,504],zr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Or5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],c16=(X)=>X?.$retryable!==void 0,Dr5=(X)=>Fr5.includes(X.name),i16=(X)=>X.$metadata?.clockSkewCorrected,p16=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},wr5=(X)=>X.$metadata?.httpStatusCode===429||Ur5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>c16(X)||i16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Br5.includes(X.name)||zr5.includes(X?.code||"")||Or5.includes(X?.code||"")||Nr5.includes(X.$metadata?.httpStatusCode||0)||p16(X)||n16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Lr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function n16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Er5.isBrowserNetworkError=p16;Er5.isClockSkewCorrectedError=i16;Er5.isClockSkewError=Dr5;Er5.isNodeJsHttp2TransientError=n16;Er5.isRetryableByTrait=c16;Er5.isServerError=Lr5;Er5.isThrottlingError=wr5;Er5.isTransientError=eN0});var Dw=k((yr5)=>{var Rr5=Xz0();yr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(yr5.RETRY_MODES||(yr5.RETRY_MODES={}));var QT1=3,Sr5=yr5.RETRY_MODES.STANDARD;class JT1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||Rr5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>JT1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var kr5=100,Qz0=20000,Cr5=500,Yz0=500,vr5=5,_r5=10,t16=1,fr5="amz-sdk-invocation-id",br5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class a16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=yr5.RETRY_MODES.STANDARD;capacity=Yz0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new a16}async acquireInitialRetryToken(X){return new Gz0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===GT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??t16))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class r16{mode=yr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class o16 extends gX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}yr5.AdaptiveRetryStrategy=r16;yr5.ConfiguredRetryStrategy=o16;yr5.DEFAULT_MAX_ATTEMPTS=QT1;yr5.DEFAULT_RETRY_DELAY_BASE=kr5;yr5.DEFAULT_RETRY_MODE=Sr5;yr5.DefaultRateLimiter=JT1;yr5.INITIAL_RETRY_TOKENS=Yz0;yr5.INVOCATION_ID_HEADER=fr5;yr5.MAXIMUM_RETRY_DELAY=Qz0;yr5.NO_RETRY_INCREMENT=t16;yr5.REQUEST_HEADER=br5;yr5.RETRY_COST=vr5;yr5.Retry=eQ;yr5.StandardRetryStrategy=gX1;yr5.THROTTLING_RETRY_DELAY_BASE=Cr5;yr5.TIMEOUT_RETRY_COST=_r5});var WX=k(($o5)=>{var er5=Dw(),Jz0={warningEmitted:!1},Xo5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
|
|
1646
|
+
`);Q=W.pop()??"";for(let Z of W){let $=w16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=w16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Fa5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Ga({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ha5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)L16(U.stdout),L16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Ga({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();Wz();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as P16,jsxs as rA1}from"react/jsx-runtime";function E16(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function Na5(X,Y){if(Ua5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ba5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>E16(W)).join(", "),color:"cyan"}}let Q=E16(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function za5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function q16({env:X}){let Y=za5(X);return P16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(gN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=Na5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),P16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ua5,Ba5;var A16=w(()=>{Ua5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ba5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var T16=w(()=>{uN0={name:"decocms",version:"2.306.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as qU,Text as RX}from"ink";import{Spinner as Da5}from"@inkjs/ui";import{useSyncExternalStore as I16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function qa5(X,Y){if(!X||!Pa5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function V16({status:X}){if(X==="pending")return TY(Da5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function j16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=I16(cm0,dm0),Z=I16(rm0,am0);return sQ(qU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(qU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,Ea5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=qa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(qU,{flexDirection:"column",marginTop:1,children:[wa5.map(($,K)=>TY(RX,{color:La5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(qU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(qU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(qU,{gap:2,children:[X.map(($)=>sQ(qU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(V16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(V16,{status:Y})]})]}),TY(qU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(qU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var wa5,La5,lN0,Ea5=30,Pa5;var M16=w(()=>{T16();Vt1();Ct1();wa5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],La5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Pa5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Aa5}from"react";function Ta5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function Ia5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function R16(){return Aa5(Ia5,Ta5)}var oA1;var S16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Va5,Text as yX1}from"ink";import{useSyncExternalStore as ja5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function Ma5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function k16({logs:X,headerHeight:Y}){let{rows:G}=R16(),{logFlow:Q}=ja5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Va5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(yX1,{children:[dN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(yX1,{color:Ma5(Z.status),children:Z.status}),dN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var C16=w(()=>{Wz();S16()});var cN0={};T0(cN0,{App:()=>fa5});import{Box as Ra5,Text as Sa5,useInput as ka5}from"ink";import{useSyncExternalStore as Ca5}from"react";import{jsx as sA1,jsxs as ba5}from"react/jsx-runtime";function fa5({home:X}){let Y=Ca5(vX1,CX1);return ka5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),ba5(Ra5,{flexDirection:"column",children:[sA1(j16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(q16,{env:Y.env}):sA1(Sa5,{dimColor:!0,children:"Loading configuration..."}):sA1(k16,{logs:Y.logs,headerHeight:Y.vibe?_a5:va5})]})}var va5=15,_a5=19;var iN0=w(()=>{A16();M16();C16();Wz();bd()});function v16(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var bj=k((la5)=>{la5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpAuthLocation||(la5.HttpAuthLocation={}));la5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpApiKeyAuthLocation||(la5.HttpApiKeyAuthLocation={}));la5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(la5.EndpointURLScheme||(la5.EndpointURLScheme={}));la5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(la5.AlgorithmId||(la5.AlgorithmId={}));var ya5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>la5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>la5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},xa5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},ha5=(X)=>{return ya5(X)},ga5=(X)=>{return xa5(X)};la5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(la5.FieldPosition||(la5.FieldPosition={}));var ua5="__smithy_context";la5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(la5.IniSectionType||(la5.IniSectionType={}));la5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(la5.RequestHandlerProtocol||(la5.RequestHandlerProtocol={}));la5.SMITHY_CONTEXT_KEY=ua5;la5.getDefaultClientConfiguration=ha5;la5.resolveDefaultRuntimeConfig=ga5});var u7=k((ra5)=>{var ia5=bj(),pa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},na5=(X)=>{return{httpHandler:X.httpHandler()}};class _16{name;kind;values;constructor({name:X,kind:Y=ia5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class f16{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class eA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ta5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return eA1.clone(this)}}function ta5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class b16{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function aa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ra5.Field=_16;ra5.Fields=f16;ra5.HttpRequest=eA1;ra5.HttpResponse=b16;ra5.getHttpHandlerExtensionConfiguration=pa5;ra5.isValidHostname=aa5;ra5.resolveHttpHandlerRuntimeConfig=na5});function Jr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&y16.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var y16,Zr5,x16=(X)=>({applyToStack:(Y)=>{Y.add(Jr5(X),Zr5)}});var h16=w(()=>{y16=X1(u7(),1);Zr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,yj,YT1,E9,g16,hX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(g16||(g16={}));hX1=E9.CRC32});var kq,Qa=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Wr5="AWS_REQUEST_CHECKSUM_CALCULATION",$r5="request_checksum_calculation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Qa(X,Wr5,wH,kq.ENV),configFileSelector:(X)=>Qa(X,$r5,wH,kq.CONFIG),default:XT1}});var Kr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Hr5="response_checksum_validation",m16;var d16=w(()=>{LH();sN0();m16={environmentVariableSelector:(X)=>Qa(X,Kr5,yj,kq.ENV),configFileSelector:(X)=>Qa(X,Hr5,yj,kq.CONFIG),default:YT1}});var Xz0=k((Er5)=>{var Fr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Ur5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Br5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Nr5=[500,502,503,504],zr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Or5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],c16=(X)=>X?.$retryable!==void 0,Dr5=(X)=>Fr5.includes(X.name),i16=(X)=>X.$metadata?.clockSkewCorrected,p16=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},wr5=(X)=>X.$metadata?.httpStatusCode===429||Ur5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>c16(X)||i16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Br5.includes(X.name)||zr5.includes(X?.code||"")||Or5.includes(X?.code||"")||Nr5.includes(X.$metadata?.httpStatusCode||0)||p16(X)||n16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Lr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function n16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Er5.isBrowserNetworkError=p16;Er5.isClockSkewCorrectedError=i16;Er5.isClockSkewError=Dr5;Er5.isNodeJsHttp2TransientError=n16;Er5.isRetryableByTrait=c16;Er5.isServerError=Lr5;Er5.isThrottlingError=wr5;Er5.isTransientError=eN0});var Dw=k((yr5)=>{var Rr5=Xz0();yr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(yr5.RETRY_MODES||(yr5.RETRY_MODES={}));var QT1=3,Sr5=yr5.RETRY_MODES.STANDARD;class JT1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||Rr5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>JT1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var kr5=100,Qz0=20000,Cr5=500,Yz0=500,vr5=5,_r5=10,t16=1,fr5="amz-sdk-invocation-id",br5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class a16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=yr5.RETRY_MODES.STANDARD;capacity=Yz0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new a16}async acquireInitialRetryToken(X){return new Gz0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===GT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??t16))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class r16{mode=yr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class o16 extends gX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}yr5.AdaptiveRetryStrategy=r16;yr5.ConfiguredRetryStrategy=o16;yr5.DEFAULT_MAX_ATTEMPTS=QT1;yr5.DEFAULT_RETRY_DELAY_BASE=kr5;yr5.DEFAULT_RETRY_MODE=Sr5;yr5.DefaultRateLimiter=JT1;yr5.INITIAL_RETRY_TOKENS=Yz0;yr5.INVOCATION_ID_HEADER=fr5;yr5.MAXIMUM_RETRY_DELAY=Qz0;yr5.NO_RETRY_INCREMENT=t16;yr5.REQUEST_HEADER=br5;yr5.RETRY_COST=vr5;yr5.Retry=eQ;yr5.StandardRetryStrategy=gX1;yr5.THROTTLING_RETRY_DELAY_BASE=Cr5;yr5.TIMEOUT_RETRY_COST=_r5});var WX=k(($o5)=>{var er5=Dw(),Jz0={warningEmitted:!1},Xo5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
|
|
1647
1647
|
no longer support Node.js ${X} in January 2026.
|
|
1648
1648
|
|
|
1649
1649
|
To continue receiving updates to AWS services, bug fixes, and security
|
|
@@ -7427,7 +7427,6 @@ var orchestrator = new SetupOrchestrator({
|
|
|
7427
7427
|
branchStatus
|
|
7428
7428
|
});
|
|
7429
7429
|
var discoveredScripts = null;
|
|
7430
|
-
var lastWrittenProxyPort;
|
|
7431
7430
|
var origEvent = broadcaster.broadcastEvent.bind(broadcaster);
|
|
7432
7431
|
broadcaster.broadcastEvent = (event, data) => {
|
|
7433
7432
|
if (event === "scripts") {
|
|
@@ -7491,12 +7490,6 @@ var lastStatus = startUpstreamProbe({
|
|
|
7491
7490
|
if (s.ready && s.port !== null) {
|
|
7492
7491
|
appService.markUp();
|
|
7493
7492
|
}
|
|
7494
|
-
if (s.port !== null && s.port !== lastWrittenProxyPort && appService.pid() !== undefined) {
|
|
7495
|
-
lastWrittenProxyPort = s.port;
|
|
7496
|
-
store.apply({
|
|
7497
|
-
application: { proxy: { targetPort: s.port } }
|
|
7498
|
-
});
|
|
7499
|
-
}
|
|
7500
7493
|
}
|
|
7501
7494
|
});
|
|
7502
7495
|
var getDevPort = () => lastStatus.port;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"single": {
|
|
3
|
+
"topLeft": "┌",
|
|
4
|
+
"top": "─",
|
|
5
|
+
"topRight": "┐",
|
|
6
|
+
"right": "│",
|
|
7
|
+
"bottomRight": "┘",
|
|
8
|
+
"bottom": "─",
|
|
9
|
+
"bottomLeft": "└",
|
|
10
|
+
"left": "│"
|
|
11
|
+
},
|
|
12
|
+
"double": {
|
|
13
|
+
"topLeft": "╔",
|
|
14
|
+
"top": "═",
|
|
15
|
+
"topRight": "╗",
|
|
16
|
+
"right": "║",
|
|
17
|
+
"bottomRight": "╝",
|
|
18
|
+
"bottom": "═",
|
|
19
|
+
"bottomLeft": "╚",
|
|
20
|
+
"left": "║"
|
|
21
|
+
},
|
|
22
|
+
"round": {
|
|
23
|
+
"topLeft": "╭",
|
|
24
|
+
"top": "─",
|
|
25
|
+
"topRight": "╮",
|
|
26
|
+
"right": "│",
|
|
27
|
+
"bottomRight": "╯",
|
|
28
|
+
"bottom": "─",
|
|
29
|
+
"bottomLeft": "╰",
|
|
30
|
+
"left": "│"
|
|
31
|
+
},
|
|
32
|
+
"bold": {
|
|
33
|
+
"topLeft": "┏",
|
|
34
|
+
"top": "━",
|
|
35
|
+
"topRight": "┓",
|
|
36
|
+
"right": "┃",
|
|
37
|
+
"bottomRight": "┛",
|
|
38
|
+
"bottom": "━",
|
|
39
|
+
"bottomLeft": "┗",
|
|
40
|
+
"left": "┃"
|
|
41
|
+
},
|
|
42
|
+
"singleDouble": {
|
|
43
|
+
"topLeft": "╓",
|
|
44
|
+
"top": "─",
|
|
45
|
+
"topRight": "╖",
|
|
46
|
+
"right": "║",
|
|
47
|
+
"bottomRight": "╜",
|
|
48
|
+
"bottom": "─",
|
|
49
|
+
"bottomLeft": "╙",
|
|
50
|
+
"left": "║"
|
|
51
|
+
},
|
|
52
|
+
"doubleSingle": {
|
|
53
|
+
"topLeft": "╒",
|
|
54
|
+
"top": "═",
|
|
55
|
+
"topRight": "╕",
|
|
56
|
+
"right": "│",
|
|
57
|
+
"bottomRight": "╛",
|
|
58
|
+
"bottom": "═",
|
|
59
|
+
"bottomLeft": "╘",
|
|
60
|
+
"left": "│"
|
|
61
|
+
},
|
|
62
|
+
"classic": {
|
|
63
|
+
"topLeft": "+",
|
|
64
|
+
"top": "-",
|
|
65
|
+
"topRight": "+",
|
|
66
|
+
"right": "|",
|
|
67
|
+
"bottomRight": "+",
|
|
68
|
+
"bottom": "-",
|
|
69
|
+
"bottomLeft": "+",
|
|
70
|
+
"left": "|"
|
|
71
|
+
},
|
|
72
|
+
"arrow": {
|
|
73
|
+
"topLeft": "↘",
|
|
74
|
+
"top": "↓",
|
|
75
|
+
"topRight": "↙",
|
|
76
|
+
"right": "←",
|
|
77
|
+
"bottomRight": "↖",
|
|
78
|
+
"bottom": "↑",
|
|
79
|
+
"bottomLeft": "↗",
|
|
80
|
+
"left": "→"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
declare namespace cliBoxes {
|
|
2
|
+
/**
|
|
3
|
+
Style of the box border.
|
|
4
|
+
*/
|
|
5
|
+
interface BoxStyle {
|
|
6
|
+
readonly topLeft: string;
|
|
7
|
+
readonly top: string;
|
|
8
|
+
readonly topRight: string;
|
|
9
|
+
readonly right: string;
|
|
10
|
+
readonly bottomRight: string;
|
|
11
|
+
readonly bottom: string;
|
|
12
|
+
readonly bottomLeft: string;
|
|
13
|
+
readonly left: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
All box styles.
|
|
18
|
+
*/
|
|
19
|
+
interface Boxes {
|
|
20
|
+
/**
|
|
21
|
+
@example
|
|
22
|
+
```
|
|
23
|
+
┌────┐
|
|
24
|
+
│ │
|
|
25
|
+
└────┘
|
|
26
|
+
```
|
|
27
|
+
*/
|
|
28
|
+
readonly single: BoxStyle;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
@example
|
|
32
|
+
```
|
|
33
|
+
╔════╗
|
|
34
|
+
║ ║
|
|
35
|
+
╚════╝
|
|
36
|
+
```
|
|
37
|
+
*/
|
|
38
|
+
readonly double: BoxStyle;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
@example
|
|
42
|
+
```
|
|
43
|
+
╭────╮
|
|
44
|
+
│ │
|
|
45
|
+
╰────╯
|
|
46
|
+
```
|
|
47
|
+
*/
|
|
48
|
+
readonly round: BoxStyle;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
@example
|
|
52
|
+
```
|
|
53
|
+
┏━━━━┓
|
|
54
|
+
┃ ┃
|
|
55
|
+
┗━━━━┛
|
|
56
|
+
```
|
|
57
|
+
*/
|
|
58
|
+
readonly bold: BoxStyle;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
@example
|
|
62
|
+
```
|
|
63
|
+
╓────╖
|
|
64
|
+
║ ║
|
|
65
|
+
╙────╜
|
|
66
|
+
```
|
|
67
|
+
*/
|
|
68
|
+
readonly singleDouble: BoxStyle;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
@example
|
|
72
|
+
```
|
|
73
|
+
╒════╕
|
|
74
|
+
│ │
|
|
75
|
+
╘════╛
|
|
76
|
+
```
|
|
77
|
+
*/
|
|
78
|
+
readonly doubleSingle: BoxStyle;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
@example
|
|
82
|
+
```
|
|
83
|
+
+----+
|
|
84
|
+
| |
|
|
85
|
+
+----+
|
|
86
|
+
```
|
|
87
|
+
*/
|
|
88
|
+
readonly classic: BoxStyle;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
@example
|
|
92
|
+
```
|
|
93
|
+
↘↓↓↓↓↙
|
|
94
|
+
→ ←
|
|
95
|
+
↗↑↑↑↑↖
|
|
96
|
+
```
|
|
97
|
+
*/
|
|
98
|
+
readonly arrow: BoxStyle;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
Boxes for use in the terminal.
|
|
104
|
+
|
|
105
|
+
@example
|
|
106
|
+
```
|
|
107
|
+
import cliBoxes = require('cli-boxes');
|
|
108
|
+
|
|
109
|
+
console.log(cliBoxes.single);
|
|
110
|
+
// {
|
|
111
|
+
// topLeft: '┌',
|
|
112
|
+
// top: '─',
|
|
113
|
+
// topRight: '┐',
|
|
114
|
+
// right: '│',
|
|
115
|
+
// bottomRight: '┘',
|
|
116
|
+
// bottom: '─',
|
|
117
|
+
// bottomLeft: '└',
|
|
118
|
+
// left: '│'
|
|
119
|
+
// }
|
|
120
|
+
```
|
|
121
|
+
*/
|
|
122
|
+
declare const cliBoxes: cliBoxes.Boxes & {
|
|
123
|
+
// TODO: Remove this for the next major release
|
|
124
|
+
default: typeof cliBoxes;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export = cliBoxes;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cli-boxes",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Boxes for use in the terminal",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": "sindresorhus/cli-boxes",
|
|
7
|
+
"funding": "https://github.com/sponsors/sindresorhus",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Sindre Sorhus",
|
|
10
|
+
"email": "sindresorhus@gmail.com",
|
|
11
|
+
"url": "https://sindresorhus.com"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=10"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"test": "xo && ava && tsd"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"index.js",
|
|
21
|
+
"index.d.ts",
|
|
22
|
+
"boxes.json"
|
|
23
|
+
],
|
|
24
|
+
"keywords": [
|
|
25
|
+
"cli",
|
|
26
|
+
"box",
|
|
27
|
+
"boxes",
|
|
28
|
+
"terminal",
|
|
29
|
+
"term",
|
|
30
|
+
"console",
|
|
31
|
+
"ascii",
|
|
32
|
+
"unicode",
|
|
33
|
+
"border",
|
|
34
|
+
"text",
|
|
35
|
+
"json"
|
|
36
|
+
],
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"ava": "^2.4.0",
|
|
39
|
+
"tsd": "^0.14.0",
|
|
40
|
+
"xo": "^0.37.1"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# cli-boxes
|
|
2
|
+
|
|
3
|
+
> Boxes for use in the terminal
|
|
4
|
+
|
|
5
|
+
The list of boxes is just a [JSON file](boxes.json) and can be used anywhere.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
$ npm install cli-boxes
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
const cliBoxes = require('cli-boxes');
|
|
17
|
+
|
|
18
|
+
console.log(cliBoxes.single);
|
|
19
|
+
/*
|
|
20
|
+
{
|
|
21
|
+
topLeft: '┌',
|
|
22
|
+
top: '─',
|
|
23
|
+
topRight: '┐',
|
|
24
|
+
right: '│',
|
|
25
|
+
bottomRight: '┘',
|
|
26
|
+
bottom: '─',
|
|
27
|
+
bottomLeft: '└',
|
|
28
|
+
left: '│'
|
|
29
|
+
}
|
|
30
|
+
*/
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## API
|
|
34
|
+
|
|
35
|
+
### cliBoxes
|
|
36
|
+
|
|
37
|
+
#### `single`
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
┌────┐
|
|
41
|
+
│ │
|
|
42
|
+
└────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### `double`
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
╔════╗
|
|
49
|
+
║ ║
|
|
50
|
+
╚════╝
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### `round`
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
╭────╮
|
|
57
|
+
│ │
|
|
58
|
+
╰────╯
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### `bold`
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
┏━━━━┓
|
|
65
|
+
┃ ┃
|
|
66
|
+
┗━━━━┛
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### `singleDouble`
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
╓────╖
|
|
73
|
+
║ ║
|
|
74
|
+
╙────╜
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### `doubleSingle`
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
╒════╕
|
|
81
|
+
│ │
|
|
82
|
+
╘════╛
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### `classic`
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
+----+
|
|
89
|
+
| |
|
|
90
|
+
+----+
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### `arrow`
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
↘↓↓↓↓↙
|
|
97
|
+
→ ←
|
|
98
|
+
↗↑↑↑↑↖
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Related
|
|
102
|
+
|
|
103
|
+
- [boxen](https://github.com/sindresorhus/boxen) - Create boxes in the terminal
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
<div align="center">
|
|
108
|
+
<b>
|
|
109
|
+
<a href="https://tidelift.com/subscription/pkg/npm-cli-boxes?utm_source=npm-cli-boxes&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
|
110
|
+
</b>
|
|
111
|
+
<br>
|
|
112
|
+
<sub>
|
|
113
|
+
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
|
114
|
+
</sub>
|
|
115
|
+
</div>
|