@fased/fased 0.1.21 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/{active-listener-B_AAz_Nv.js → active-listener-CILIY2ox.js} +1 -1
- package/dist/{agent-scope-Cb1u7HE7.js → agent-scope-DwKyukUg.js} +124 -124
- package/dist/{agents-BwDWbvDH.js → agents-J1fRpMRy.js} +8 -8
- package/dist/{attachment-normalize-C9F-gS4-.js → attachment-normalize-CJWQWDbC.js} +1 -1
- package/dist/{attachment-normalize-C9w24bkb.js → attachment-normalize-Din9M1Y4.js} +1 -1
- package/dist/{audio-preflight-DGoGnRdo.js → audio-preflight-CiHBO6op.js} +31 -31
- package/dist/{audio-preflight-Dg10mePo.js → audio-preflight-D3I9e121.js} +2 -2
- package/dist/{audio-preflight-QMOvUkXH.js → audio-preflight-Dpmj_mYE.js} +1 -1
- package/dist/{audio-preflight-DnHScDmF.js → audio-preflight-fOBO0I4S.js} +2 -2
- package/dist/{audio-preflight-CTs9Ta27.js → audio-preflight-tHKngO6z.js} +1 -1
- package/dist/{audit-DJOyIBeV.js → audit-BGrhx_IL.js} +1 -1
- package/dist/{audit-DmYUk4AC.js → audit-DQyLAEfl.js} +1 -1
- package/dist/{auth-7Dkf1_CI.js → auth-C4Rs_Ca4.js} +5 -5
- package/dist/{auth-choice-D9LWnNpF.js → auth-choice-BTahePAl.js} +1 -1
- package/dist/{auth-choice-DbTYwdGn.js → auth-choice-ioJ3htvR.js} +1 -1
- package/dist/{auth-choice-prompt-D5YuCYf7.js → auth-choice-prompt-Cigxs_6f.js} +1 -1
- package/dist/{auth-choice-prompt-DFyVEU7J.js → auth-choice-prompt-Db0yW_LH.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +31 -31
- package/dist/bundled/bootstrap-extra-files/handler.js +3 -3
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +31 -31
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-DY_GHJwO.js → channel-activity-D17GYsMz.js} +1 -1
- package/dist/{channel-web-CAJ_OiB2.js → channel-web-CclBHrhb.js} +1 -1
- package/dist/{channel-web-X3OJcLB2.js → channel-web-DIRVjokt.js} +1 -1
- package/dist/{channels-D9Oj681h.js → channels-A880gMB8.js} +6 -6
- package/dist/{channels-BqOjEy1R.js → channels-DWuoO75L.js} +6 -6
- package/dist/{channels-cli-DKRuJbjY.js → channels-cli-54FnZFBp.js} +5 -5
- package/dist/{channels-cli-D5hZAzoE.js → channels-cli-HVr7lRa7.js} +5 -5
- package/dist/{chunk-Cj87uJLo.js → chunk-DfA5CGzI.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-ClS8EuDK.js → cli-C8OGL6Ju.js} +2 -2
- package/dist/{cli-Dm0682Gu.js → cli-cnJ-Fwbu.js} +2 -2
- package/dist/{command-registry-C2wqEo64.js → command-registry-BHCwSxmh.js} +9 -9
- package/dist/{commands-registry-Du1VUNqv.js → commands-registry-ShBrc7Zz.js} +1 -1
- package/dist/{completion-cli-B9mW_que.js → completion-cli-BsgojaxZ.js} +2 -2
- package/dist/{completion-cli-DCvm9Xp-.js → completion-cli-DuqDB42S.js} +1 -1
- package/dist/{config-cli-680jTQ3-.js → config-cli-B62owpbq.js} +1 -1
- package/dist/{config-cli-1SYvQdhO.js → config-cli-nRzwa31Y.js} +1 -1
- package/dist/{config-eval-BVvNsPGB.js → config-eval-B5XXAbrm.js} +3 -3
- package/dist/{configure-BfhVLgNf.js → configure-ByLqSsRA.js} +12 -12
- package/dist/{configure-DQLQp2nb.js → configure-CbMYLFUm.js} +12 -12
- package/dist/control-ui/assets/app-DXYMrRJ9.js.map +1 -1
- package/dist/{cron-cli-C4hgRvYJ.js → cron-cli-CLNLFdxi.js} +2 -2
- package/dist/{cron-cli-DQjdHktC.js → cron-cli-CM9CM1GR.js} +2 -2
- package/dist/{daemon-cli-DWhAXx5H.js → daemon-cli-9ids8mMV.js} +1 -1
- package/dist/{daemon-cli-B3OUkSy6.js → daemon-cli-w15TQchq.js} +1 -1
- package/dist/daemon-cli.js +1 -1
- package/dist/{deps-RXAe1X5s.js → deps-BVNeN6gT.js} +1 -1
- package/dist/{deps-DdP-Hmxc.js → deps-Uo5boHSY.js} +1 -1
- package/dist/{diagnostic-D6XQAXl4.js → diagnostic-B4NKiC20.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{fetch-BKzFOgku.js → fetch-BH7uURYM.js} +1 -1
- package/dist/{fetch-guard-B3bzvmt4.js → fetch-guard-DqpQMLwE.js} +1 -1
- package/dist/{filesystem-manager-CrDoOIOx.js → filesystem-manager-DKU5F0fA.js} +4 -4
- package/dist/{fs-safe-DcQcXS6I.js → fs-safe-CwUdejUJ.js} +2 -2
- package/dist/{gateway-cli-Y450jJFF.js → gateway-cli-C9Os2Z5s.js} +27 -27
- package/dist/{gateway-cli-CHukRtBG.js → gateway-cli-CLFeYf4s.js} +27 -27
- package/dist/{github-copilot-token-DYrFvncE.js → github-copilot-token-eyrRGmGp.js} +8 -8
- package/dist/{health-Db548DTY.js → health-CghndVpq.js} +2 -2
- package/dist/{health-C-AsEUPg.js → health-GSYUFoyr.js} +2 -2
- package/dist/{heartbeat-runner-CE9O7xVk.js → heartbeat-runner-1b23y_3_.js} +1 -1
- package/dist/{heartbeat-runner-DAPP5ojq.js → heartbeat-runner-DPtasJ9O.js} +1 -1
- package/dist/{hooks-cli-DpllVSSB.js → hooks-cli-BXZ0yiOV.js} +3 -3
- package/dist/{hooks-cli-ApL31lTH.js → hooks-cli-_VHugcqb.js} +3 -3
- package/dist/index.js +7 -7
- package/dist/{internal-B3yITtDC.js → internal-CU3wrcPl.js} +3 -3
- package/dist/{ipv4-Bh1H98-c.js → ipv4-Cb1Ofo1o.js} +2 -2
- package/dist/{ipv4-D88X6kcK.js → ipv4-h9TrAq_w.js} +2 -2
- package/dist/{lifecycle-D2VlrxY8.js → lifecycle-CBewhyXk.js} +1 -1
- package/dist/{lifecycle-C5O_poBp.js → lifecycle-CV1zHjpj.js} +1 -1
- package/dist/{list.auth-overview-DQUc2B2l.js → list.auth-overview-C8izvpBJ.js} +1 -1
- package/dist/{list.auth-overview-N9tbnvNE.js → list.auth-overview-CvPcpBIP.js} +1 -1
- package/dist/llm-slug-generator.js +31 -31
- package/dist/{login-BPi6GEMh.js → login-DmSOJJZh.js} +2 -2
- package/dist/{login-qr-BaJ9M5z6.js → login-qr-gY230e9k.js} +3 -3
- package/dist/{manager-C05ypUW3.js → manager-Cxjfnksb.js} +8 -8
- package/dist/{markdown-tables-CBLut_ie.js → markdown-tables-DFtTedxN.js} +1 -1
- package/dist/{media-DUBmlR9u.js → media-DZj8v0oe.js} +5 -5
- package/dist/{memory-search-tdsFhtIi.js → memory-search-BxRjHrXP.js} +2 -2
- package/dist/{model-catalog-BQ5G4eK6.js → model-catalog-Iu_LUOVA.js} +6 -6
- package/dist/{models-BObC-MWx.js → models-DqMgO-Ak.js} +4 -4
- package/dist/{models-cli-Bcjaf4CI.js → models-cli-C7WASQac.js} +4 -4
- package/dist/{models-cli-r2llwGBO.js → models-cli-D6H_Kt3i.js} +5 -5
- package/dist/{node-cli-B5TpzQ6U.js → node-cli-B8DI8VK2.js} +2 -2
- package/dist/{node-cli-B8V8ar0H.js → node-cli-CGwktXpe.js} +2 -2
- package/dist/{onboard-C6Z7OaQ8.js → onboard-BR6vBv2I.js} +6 -6
- package/dist/{onboard-D8EOxPOn.js → onboard-C-fjU4uC.js} +6 -6
- package/dist/{onboard-channels-C4gBvkYQ.js → onboard-channels-B3tCPpRS.js} +2 -2
- package/dist/{onboard-channels-CDr6F5Rc.js → onboard-channels-C1UyGFfb.js} +2 -2
- package/dist/{onboard-search-BzpbxIgm.js → onboard-search-CjU6w3Sm.js} +5 -5
- package/dist/{onboard-search-BDLus6nY.js → onboard-search-Ds5KeCF_.js} +5 -5
- package/dist/{onboarding-CIjqOjDq.js → onboarding-BL3becPO.js} +181 -35
- package/dist/{onboarding-DjXH2-ro.js → onboarding-DGAQeYgr.js} +181 -35
- package/dist/{openresponses-http-C9x0SEG6.js → openresponses-http-Bcy1YyQY.js} +2 -2
- package/dist/{openresponses-http-eMouHu_v.js → openresponses-http-DIR_t4i1.js} +31 -31
- package/dist/{openresponses-http-DU9S_V_8.js → openresponses-http-DxsL0uBk.js} +1 -1
- package/dist/{openresponses-http-NFMdHWOs.js → openresponses-http-IVnQ_wz0.js} +2 -2
- package/dist/{openresponses-http-BA2nkk7t.js → openresponses-http-Qb_KOtcX.js} +1 -1
- package/dist/{outbound-BF3W1nJQ.js → outbound-BtgGTj4E.js} +6 -6
- package/dist/{outbound-attachment-CZV6JZkx.js → outbound-attachment-NKTzAe-U.js} +2 -2
- package/dist/{parent-default-help-zu6kW9Un.js → parent-default-help-BJGqN88G.js} +1 -1
- package/dist/{parent-default-help-k4GD2-UF.js → parent-default-help-XXsayZks.js} +1 -1
- package/dist/{path-alias-guards--dquYHnR.js → path-alias-guards-BgsM3Cb3.js} +1 -1
- package/dist/{paths-BGX-IMoI.js → paths-57KGLbK2.js} +22 -22
- package/dist/{pi-embedded-DPElH0OZ.js → pi-embedded-CZAiurHo.js} +5 -5
- package/dist/{pi-embedded-Pkm2p81t.js → pi-embedded-qk5CdQmR.js} +239 -239
- package/dist/{pi-model-discovery-DYwyxntg.js → pi-model-discovery-CfcnLOyX.js} +7 -7
- package/dist/pi-model-discovery-runtime-D85aZCOu.js +5 -0
- package/dist/{plugin-registry-DEewJtHt.js → plugin-registry-Bw0a_OGC.js} +1 -1
- package/dist/{plugin-registry-DfO1RfZv.js → plugin-registry-Dqk6vxYj.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-a_1hr0Eg.js → audio-preflight-BO8XDtTk.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-L8bE2tgB.js → audio-preflight-DK-6iXZY.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.js +1 -1
- package/dist/plugin-sdk/{channel-web-BNlpZrWA.js → channel-web-DgXfvJo-.js} +1 -1
- package/dist/plugin-sdk/command-status.js +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{openresponses-http-DuRGQn_a.js → openresponses-http-DBFqruTK.js} +1 -1
- package/dist/plugin-sdk/{openresponses-http-BBdkt744.js → openresponses-http-RBdNxv8F.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-FgSYY3zE.js → pi-model-discovery-runtime-BWcaNxzp.js} +1 -1
- package/dist/plugin-sdk/{registry-DyRgZdL8.js → registry-DXXOSq_V.js} +8 -8
- package/dist/plugin-sdk/{reply-DclM907b.js → reply-Bb9pzXn4.js} +5 -5
- package/dist/plugin-sdk/src/brand.d.ts +2 -2
- package/dist/plugin-sdk/{status-EnvYKAtO.js → status-CHo58oXD.js} +5 -5
- package/dist/plugin-sdk/{web-C0nKlODk.js → web-B-fwFsth.js} +1 -1
- package/dist/plugin-sdk/{web-BrtGwPHN.js → web-BIIifta2.js} +2 -2
- package/dist/{plugins-cli-BU7lm9mm.js → plugins-cli-BKlKaixI.js} +5 -5
- package/dist/{plugins-cli-Be4GLYdI.js → plugins-cli-dvRFoJCC.js} +5 -5
- package/dist/{program-B78oSJVp.js → program-P-9mYfYw.js} +7 -7
- package/dist/{program-context-DpABaPXE.js → program-context-DZ2qDI4u.js} +24 -24
- package/dist/{prompt-select-styled-DI5ODziX.js → prompt-select-styled-CdVuqLJH.js} +4 -4
- package/dist/{prompt-select-styled-DmcQ0_hv.js → prompt-select-styled-DHjjwvXl.js} +4 -4
- package/dist/{pw-ai-42y3optV.js → pw-ai-CmgZwdpF.js} +5 -5
- package/dist/{qmd-manager-BPz-XVY5.js → qmd-manager-B4jAaAzx.js} +5 -5
- package/dist/{qmd-scope-D2okAldm.js → qmd-scope-BdblEj4C.js} +1 -1
- package/dist/{query-expansion-f4DE13gJ.js → query-expansion-JhTilyB1.js} +2 -2
- package/dist/{register.agent-FC9A__Az.js → register.agent-Be3pMMEj.js} +8 -8
- package/dist/{register.agent-DOychJ9q.js → register.agent-rgc26ryI.js} +9 -9
- package/dist/{register.configure-ybGicOMR.js → register.configure-BKYZzj-a.js} +12 -12
- package/dist/{register.configure-i3gbc5Cc.js → register.configure-DUgwZXRG.js} +12 -12
- package/dist/{register.maintenance-CYX_k6x1.js → register.maintenance-CEB2_x4K.js} +8 -8
- package/dist/{register.maintenance-MPPzwTam.js → register.maintenance-OE1jM64G.js} +9 -9
- package/dist/{register.message-D6NFTigk.js → register.message-CUE4ZFjr.js} +3 -3
- package/dist/{register.message-C_Q6o32_.js → register.message-vxrokTGv.js} +3 -3
- package/dist/{register.onboard-DqR_m0_p.js → register.onboard-Cyymwvc3.js} +14 -14
- package/dist/{register.onboard-PbsAD-eY.js → register.onboard-Dg3786vL.js} +14 -14
- package/dist/{register.setup-COidGsw2.js → register.setup-B6uH9Fkv.js} +14 -14
- package/dist/{register.setup-DMqotP6N.js → register.setup-BNk3o4bu.js} +14 -14
- package/dist/{register.status-health-sessions-CeY5Pzgk.js → register.status-health-sessions-DXgm8jTd.js} +6 -6
- package/dist/{register.status-health-sessions-CPBz-3k7.js → register.status-health-sessions-n5YTxXMt.js} +6 -6
- package/dist/{register.subclis-Dxe0Sco3.js → register.subclis-h2rwp41b.js} +16 -16
- package/dist/{replies-Bn06Bh1x.js → replies-afs2sQ1G.js} +2 -2
- package/dist/{reply-701mJB_S.js → reply-C6zXCUnw.js} +6 -6
- package/dist/{reply-prefix-DwrVxkMY.js → reply-prefix-CG0zciBg.js} +1 -1
- package/dist/{resolve-route-B4dOoe-E.js → resolve-route-DZkIcri6.js} +1 -1
- package/dist/{run-main-BvouUOJB.js → run-main-BW1xk67k.js} +14 -14
- package/dist/{runtime-helper-grants-CjDNw01t.js → runtime-helper-grants-BotyKHoQ.js} +1 -1
- package/dist/{runtime-helper-grants-B5q5llgE.js → runtime-helper-grants-DlthXnch.js} +1 -1
- package/dist/{sandbox-cli-MNviI01s.js → sandbox-cli-B74LKmmu.js} +2 -2
- package/dist/{sandbox-cli-DKUHq66f.js → sandbox-cli-DVrOgz6X.js} +2 -2
- package/dist/{security-cli-C4J7sHdd.js → security-cli-B_v3gSPc.js} +3 -3
- package/dist/{security-cli-D2jFeCER.js → security-cli-DUh-3-R1.js} +3 -3
- package/dist/{send-vR6HwT94.js → send-CABrQiXU.js} +4 -4
- package/dist/{send-BQMxv218.js → send-CUYy-rA3.js} +7 -7
- package/dist/{send-kLcLFjb8.js → send-DE1no-h6.js} +5 -5
- package/dist/{send-BsajjIj8.js → send-iIy3frXq.js} +5 -5
- package/dist/{send-Da1hCe1A.js → send-lQXOUIaW.js} +18 -18
- package/dist/{server-CvQUqV31.js → server-BWmtB5RG.js} +2 -2
- package/dist/{server-BRsV4GHd.js → server-CVXoSpqC.js} +2 -2
- package/dist/{server-cron-BV2pPZ-O.js → server-cron-D0oLzDes.js} +2 -2
- package/dist/{server-cron-C-3djfm_.js → server-cron-DBSvrOWz.js} +2 -2
- package/dist/{server-node-events-Ce-RXuis.js → server-node-events-BGkUHSkq.js} +3 -3
- package/dist/{server-node-events-Bi8FQeYu.js → server-node-events-TmYB-LGW.js} +3 -3
- package/dist/{session-ZMAktQw4.js → session-TK9Idt8g.js} +5 -5
- package/dist/{skill-commands-BP6zVlmg.js → skill-commands-CCjZMCdx.js} +24 -24
- package/dist/{status-DoLjTnlQ.js → status-C1qehkux.js} +1 -1
- package/dist/{status-CIb_4gfm.js → status-CGYle9wh.js} +4 -4
- package/dist/{status-D9As1GK-.js → status-DVTZ42Xi.js} +1 -1
- package/dist/{status-BiHSisy7.js → status-hNS_-DU5.js} +4 -4
- package/dist/{tables-DMwrn7NN.js → tables-H4kq3TrS.js} +1 -1
- package/dist/{target-errors-CR_hozUt.js → target-errors-9BsSMzQY.js} +2 -2
- package/dist/{tool-loop-detection-DZ-oTJiQ.js → tool-loop-detection-D4MYRJWP.js} +2 -2
- package/dist/{tui-BpbyDMEE.js → tui-ARPlmctm.js} +1 -1
- package/dist/{tui-D9armVLc.js → tui-D6_aw9hu.js} +1 -1
- package/dist/{tui-cli-lN5CL6pA.js → tui-cli-CDBUp2y3.js} +3 -3
- package/dist/{tui-cli-A_j8l8a3.js → tui-cli-CYkhnUmj.js} +3 -3
- package/dist/{update-cli-DRefGXK8.js → update-cli-CVPEyzw1.js} +10 -10
- package/dist/{update-cli-B8_evObo.js → update-cli-ChNYv3li.js} +9 -9
- package/dist/{update-runner-DnLLf66O.js → update-runner-CMe4a4QF.js} +1 -1
- package/dist/{update-runner-Bd7n68kz.js → update-runner-dCQywbJs.js} +1 -1
- package/dist/{web-D-SMykKz.js → web-BIREWy8I.js} +35 -35
- package/dist/{web-778GrijN.js → web-Bly-ch0b.js} +1 -1
- package/dist/{web-CPKh7bSP.js → web-BvK9MRcp.js} +1 -1
- package/dist/{web-DEuBtNld.js → web-CCLojlog.js} +3 -3
- package/dist/{web-Z5JZl5Nc.js → web-CvJzsQ59.js} +3 -3
- package/dist/{web-search-providers.runtime-AAOfSU2b.js → web-search-providers.runtime-BCjJQLBJ.js} +1 -1
- package/dist/{web-search-providers.runtime-DcgcyEiV.js → web-search-providers.runtime-DCy32Tl0.js} +1 -1
- package/dist/{whatsapp-actions-favixTth.js → whatsapp-actions-C0w9GEJM.js} +12 -12
- package/docs/install/index.md +8 -1
- package/docs/install/installer.md +9 -6
- package/docs/install/vps.md +9 -2
- package/docs/start/wizard.md +9 -2
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/pi-model-discovery-runtime-BhaI9PU2.js +0 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Ba as normalizeOptionalSecretInput, Cu as formatCliCommand, Ii as resolveApiKeyForProfile, Ji as resolveDefaultSecretProviderAlias, Oa as loadPluginManifestRegistry, Pr as normalizeProviderId, Qt as readConfigFileSnapshot, Va as normalizeSecretInput, _n as parseDurationMs, di as resolveEnvApiKey, fa as upsertAuthProfile, ka as assertSupportedRuntime, ki as resolveAuthProfileOrder, ma as ensureAuthProfileStore, tn as writeConfigFile } from "./env-C77feXxI.js";
|
|
2
2
|
import { x as resolveUserPath } from "./agent-paths-BI1hx-tF.js";
|
|
3
|
-
import { A as waitForGatewayReachable, E as resolveControlUiLinks, T as randomToken, d as DEFAULT_WORKSPACE, f as applyWizardMetadata, h as ensureWorkspaceAndSessions, s as resolvePluginProviders, v as handleOnboardingRepair } from "./model-catalog-
|
|
3
|
+
import { A as waitForGatewayReachable, E as resolveControlUiLinks, T as randomToken, d as DEFAULT_WORKSPACE, f as applyWizardMetadata, h as ensureWorkspaceAndSessions, s as resolvePluginProviders, v as handleOnboardingRepair } from "./model-catalog-Iu_LUOVA.js";
|
|
4
4
|
import { A as defaultRuntime, gt as resolveGatewayPort, j as restoreTerminalState } from "./entry.js";
|
|
5
5
|
import { a as readWalletProviderRegistry, f as setWalletProvidersEnabled, t as WALLET_PROVIDER_IDS } from "./wallet-provider-registry-CFNtQ2ZR.js";
|
|
6
6
|
import { or as clearDeviceAuthStore } from "./call-B9EvxMq6.js";
|
|
@@ -8,12 +8,12 @@ import { r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from
|
|
|
8
8
|
import { a as resolveHostedOnboardingGatewayStartupMode, n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-BB0qUcut.js";
|
|
9
9
|
import { r as isSystemdUserServiceAvailable } from "./systemd-B8OPQXFR.js";
|
|
10
10
|
import { t as resolveGatewayService } from "./service-2JBjv-ge.js";
|
|
11
|
-
import { d as resolveCustomProviderId, l as parseNonInteractiveCustomApiFlags, o as CustomApiError, s as applyCustomApiConfig } from "./ipv4-
|
|
12
|
-
import { i as healthCommand } from "./health-
|
|
13
|
-
import { $ as applyLitellmConfig, At as validateAnthropicSetupToken, B as applyMistralConfig, Ct as setXaiApiKey, Dt as MINIMAX_HIGHSPEED_MODEL_ID, Et as MINIMAX_DEFAULT_MODEL_ID, F as applyMinimaxApiConfig, Ft as resolveManifestProviderAuthChoice, G as applyQwenCodingPlanConfig, H as applyMoonshotConfigCn, I as applyMinimaxApiConfigCn, J as applyTogetherConfig, K as applyQwenConfig, L as applyAuthProfileConfig$1, M as detectZaiEndpoint, Mt as normalizeSecretInputModeInput, N as applyGoogleGeminiModelDefault, P as applyOpencodeZenConfig, Pt as resolveManifestDeprecatedProviderAuthChoice, Q as applyZaiConfig, R as applyHuggingfaceConfig, St as setVolcengineApiKey, Tt as setZaiApiKey, U as applyOpenrouterConfig, V as applyMoonshotConfig, W as applyQianfanConfig, X as applyXaiConfig, Y as applyVeniceConfig, Z as applyXiaomiConfig, _t as setQwenCodingPlanApiKey, at as setGeminiApiKey, bt as setVeniceApiKey, c as applyDefaultModel, ct as setLitellmApiKey, d as resolveProviderMatch, dt as setMoonshotApiKey, et as applyCloudflareAiGatewayConfig, ft as setOpenaiApiKey, gt as setQwenApiKey, ht as setQianfanApiKey, i as applyOpenAIConfig, it as setCloudflareAiGatewayConfig, kt as buildTokenProfileId, l as mergeConfigPatch, lt as setMinimaxApiKey, m as applyPrimaryModel, mt as setOpenrouterApiKey, nt as setAnthropicApiKey, o as applyAuthProfileConfig, ot as setHuggingfaceApiKey, pt as setOpencodeZenApiKey, q as applySyntheticConfig, rt as setByteplusApiKey, s as buildApiKeyCredential, st as setKimiCodingApiKey, tt as applyVercelAiGatewayConfig, u as pickAuthMethod, ut as setMistralApiKey, vt as setSyntheticApiKey, wt as setXiaomiApiKey, xt as setVercelAiGatewayApiKey, yt as setTogetherApiKey, z as applyKimiCodeConfig } from "./auth-choice-
|
|
14
|
-
import { a as normalizeLegacyOnboardAuthChoice, i as isDeprecatedAuthChoice, r as resolveOnboardProviderAuthFlags } from "./auth-choice-prompt-
|
|
11
|
+
import { d as resolveCustomProviderId, l as parseNonInteractiveCustomApiFlags, o as CustomApiError, s as applyCustomApiConfig } from "./ipv4-h9TrAq_w.js";
|
|
12
|
+
import { i as healthCommand } from "./health-CghndVpq.js";
|
|
13
|
+
import { $ as applyLitellmConfig, At as validateAnthropicSetupToken, B as applyMistralConfig, Ct as setXaiApiKey, Dt as MINIMAX_HIGHSPEED_MODEL_ID, Et as MINIMAX_DEFAULT_MODEL_ID, F as applyMinimaxApiConfig, Ft as resolveManifestProviderAuthChoice, G as applyQwenCodingPlanConfig, H as applyMoonshotConfigCn, I as applyMinimaxApiConfigCn, J as applyTogetherConfig, K as applyQwenConfig, L as applyAuthProfileConfig$1, M as detectZaiEndpoint, Mt as normalizeSecretInputModeInput, N as applyGoogleGeminiModelDefault, P as applyOpencodeZenConfig, Pt as resolveManifestDeprecatedProviderAuthChoice, Q as applyZaiConfig, R as applyHuggingfaceConfig, St as setVolcengineApiKey, Tt as setZaiApiKey, U as applyOpenrouterConfig, V as applyMoonshotConfig, W as applyQianfanConfig, X as applyXaiConfig, Y as applyVeniceConfig, Z as applyXiaomiConfig, _t as setQwenCodingPlanApiKey, at as setGeminiApiKey, bt as setVeniceApiKey, c as applyDefaultModel, ct as setLitellmApiKey, d as resolveProviderMatch, dt as setMoonshotApiKey, et as applyCloudflareAiGatewayConfig, ft as setOpenaiApiKey, gt as setQwenApiKey, ht as setQianfanApiKey, i as applyOpenAIConfig, it as setCloudflareAiGatewayConfig, kt as buildTokenProfileId, l as mergeConfigPatch, lt as setMinimaxApiKey, m as applyPrimaryModel, mt as setOpenrouterApiKey, nt as setAnthropicApiKey, o as applyAuthProfileConfig, ot as setHuggingfaceApiKey, pt as setOpencodeZenApiKey, q as applySyntheticConfig, rt as setByteplusApiKey, s as buildApiKeyCredential, st as setKimiCodingApiKey, tt as applyVercelAiGatewayConfig, u as pickAuthMethod, ut as setMistralApiKey, vt as setSyntheticApiKey, wt as setXiaomiApiKey, xt as setVercelAiGatewayApiKey, yt as setTogetherApiKey, z as applyKimiCodeConfig } from "./auth-choice-ioJ3htvR.js";
|
|
14
|
+
import { a as normalizeLegacyOnboardAuthChoice, i as isDeprecatedAuthChoice, r as resolveOnboardProviderAuthFlags } from "./auth-choice-prompt-Cigxs_6f.js";
|
|
15
15
|
import { n as logConfigUpdated } from "./logging-DZ32I_SP.js";
|
|
16
|
-
import { a as applyRecommendedInternalHooks, i as isHostedSecurityCapableSession, n as applyHostingSecurity, o as applyOnboardingLocalWorkspaceConfig, r as configureFederationForOnboarding, t as runOnboardingWizard } from "./onboarding-
|
|
16
|
+
import { a as applyRecommendedInternalHooks, i as isHostedSecurityCapableSession, n as applyHostingSecurity, o as applyOnboardingLocalWorkspaceConfig, r as configureFederationForOnboarding, t as runOnboardingWizard } from "./onboarding-DGAQeYgr.js";
|
|
17
17
|
import { t as WizardCancelledError } from "./prompts-DdS4bZNt.js";
|
|
18
18
|
import { t as createClackPrompter } from "./clack-prompter-DhFjwbXA.js";
|
|
19
19
|
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BlmGMvvA.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { u as resolveGatewayPort } from "./paths-C9FmTW1x.js";
|
|
2
2
|
import { S as resolveUserPath } from "./agent-paths-DmOVZE7g.js";
|
|
3
3
|
import { Ga as ensureAuthProfileStore, Hi as resolveEnvApiKey, Jn as parseDurationMs, Mn as writeConfigFile, Ta as resolveDefaultSecretProviderAlias, Ua as upsertAuthProfile, ao as loadPluginManifestRegistry, bo as normalizeSecretInput, dd as formatCliCommand, di as normalizeProviderId, kn as readConfigFileSnapshot, oa as resolveAuthProfileOrder, oo as assertSupportedRuntime, pa as resolveApiKeyForProfile, yo as normalizeOptionalSecretInput } from "./agent-scope-DHrLr5OF.js";
|
|
4
|
-
import { Lt as DEFAULT_WORKSPACE, Mt as resolvePluginProviders, Qt as resolveControlUiLinks, Rt as applyWizardMetadata, Vt as ensureWorkspaceAndSessions, Wt as handleOnboardingRepair, Zt as randomToken, nn as waitForGatewayReachable } from "./reply-
|
|
4
|
+
import { Lt as DEFAULT_WORKSPACE, Mt as resolvePluginProviders, Qt as resolveControlUiLinks, Rt as applyWizardMetadata, Vt as ensureWorkspaceAndSessions, Wt as handleOnboardingRepair, Zt as randomToken, nn as waitForGatewayReachable } from "./reply-C6zXCUnw.js";
|
|
5
5
|
import { d as defaultRuntime, f as restoreTerminalState } from "./errors-Dx3S3Nrp.js";
|
|
6
6
|
import { a as readWalletProviderRegistry, f as setWalletProvidersEnabled, t as WALLET_PROVIDER_IDS } from "./wallet-provider-registry-ax0NJo0F.js";
|
|
7
7
|
import { or as clearDeviceAuthStore } from "./call-DDALpDwS.js";
|
|
@@ -9,12 +9,12 @@ import { r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from
|
|
|
9
9
|
import { a as resolveHostedOnboardingGatewayStartupMode, n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-xM3QqMXu.js";
|
|
10
10
|
import { r as isSystemdUserServiceAvailable } from "./systemd-CmxDYXvt.js";
|
|
11
11
|
import { t as resolveGatewayService } from "./service-Bsg622jp.js";
|
|
12
|
-
import { d as resolveCustomProviderId, l as parseNonInteractiveCustomApiFlags, o as CustomApiError, s as applyCustomApiConfig } from "./ipv4-
|
|
13
|
-
import { i as healthCommand } from "./health-
|
|
14
|
-
import { $ as applyLitellmConfig, At as validateAnthropicSetupToken, B as applyMistralConfig, Ct as setXaiApiKey, Dt as MINIMAX_HIGHSPEED_MODEL_ID, Et as MINIMAX_DEFAULT_MODEL_ID, F as applyMinimaxApiConfig, Ft as resolveManifestProviderAuthChoice, G as applyQwenCodingPlanConfig, H as applyMoonshotConfigCn, I as applyMinimaxApiConfigCn, J as applyTogetherConfig, K as applyQwenConfig, L as applyAuthProfileConfig$1, M as detectZaiEndpoint, Mt as normalizeSecretInputModeInput, N as applyGoogleGeminiModelDefault, P as applyOpencodeZenConfig, Pt as resolveManifestDeprecatedProviderAuthChoice, Q as applyZaiConfig, R as applyHuggingfaceConfig, St as setVolcengineApiKey, Tt as setZaiApiKey, U as applyOpenrouterConfig, V as applyMoonshotConfig, W as applyQianfanConfig, X as applyXaiConfig, Y as applyVeniceConfig, Z as applyXiaomiConfig, _t as setQwenCodingPlanApiKey, at as setGeminiApiKey, bt as setVeniceApiKey, c as applyDefaultModel, ct as setLitellmApiKey, d as resolveProviderMatch, dt as setMoonshotApiKey, et as applyCloudflareAiGatewayConfig, ft as setOpenaiApiKey, gt as setQwenApiKey, ht as setQianfanApiKey, i as applyOpenAIConfig, it as setCloudflareAiGatewayConfig, kt as buildTokenProfileId, l as mergeConfigPatch, lt as setMinimaxApiKey, m as applyPrimaryModel, mt as setOpenrouterApiKey, nt as setAnthropicApiKey, o as applyAuthProfileConfig, ot as setHuggingfaceApiKey, pt as setOpencodeZenApiKey, q as applySyntheticConfig, rt as setByteplusApiKey, s as buildApiKeyCredential, st as setKimiCodingApiKey, tt as applyVercelAiGatewayConfig, u as pickAuthMethod, ut as setMistralApiKey, vt as setSyntheticApiKey, wt as setXiaomiApiKey, xt as setVercelAiGatewayApiKey, yt as setTogetherApiKey, z as applyKimiCodeConfig } from "./auth-choice-
|
|
15
|
-
import { a as normalizeLegacyOnboardAuthChoice, i as isDeprecatedAuthChoice, r as resolveOnboardProviderAuthFlags } from "./auth-choice-prompt-
|
|
12
|
+
import { d as resolveCustomProviderId, l as parseNonInteractiveCustomApiFlags, o as CustomApiError, s as applyCustomApiConfig } from "./ipv4-Cb1Ofo1o.js";
|
|
13
|
+
import { i as healthCommand } from "./health-GSYUFoyr.js";
|
|
14
|
+
import { $ as applyLitellmConfig, At as validateAnthropicSetupToken, B as applyMistralConfig, Ct as setXaiApiKey, Dt as MINIMAX_HIGHSPEED_MODEL_ID, Et as MINIMAX_DEFAULT_MODEL_ID, F as applyMinimaxApiConfig, Ft as resolveManifestProviderAuthChoice, G as applyQwenCodingPlanConfig, H as applyMoonshotConfigCn, I as applyMinimaxApiConfigCn, J as applyTogetherConfig, K as applyQwenConfig, L as applyAuthProfileConfig$1, M as detectZaiEndpoint, Mt as normalizeSecretInputModeInput, N as applyGoogleGeminiModelDefault, P as applyOpencodeZenConfig, Pt as resolveManifestDeprecatedProviderAuthChoice, Q as applyZaiConfig, R as applyHuggingfaceConfig, St as setVolcengineApiKey, Tt as setZaiApiKey, U as applyOpenrouterConfig, V as applyMoonshotConfig, W as applyQianfanConfig, X as applyXaiConfig, Y as applyVeniceConfig, Z as applyXiaomiConfig, _t as setQwenCodingPlanApiKey, at as setGeminiApiKey, bt as setVeniceApiKey, c as applyDefaultModel, ct as setLitellmApiKey, d as resolveProviderMatch, dt as setMoonshotApiKey, et as applyCloudflareAiGatewayConfig, ft as setOpenaiApiKey, gt as setQwenApiKey, ht as setQianfanApiKey, i as applyOpenAIConfig, it as setCloudflareAiGatewayConfig, kt as buildTokenProfileId, l as mergeConfigPatch, lt as setMinimaxApiKey, m as applyPrimaryModel, mt as setOpenrouterApiKey, nt as setAnthropicApiKey, o as applyAuthProfileConfig, ot as setHuggingfaceApiKey, pt as setOpencodeZenApiKey, q as applySyntheticConfig, rt as setByteplusApiKey, s as buildApiKeyCredential, st as setKimiCodingApiKey, tt as applyVercelAiGatewayConfig, u as pickAuthMethod, ut as setMistralApiKey, vt as setSyntheticApiKey, wt as setXiaomiApiKey, xt as setVercelAiGatewayApiKey, yt as setTogetherApiKey, z as applyKimiCodeConfig } from "./auth-choice-BTahePAl.js";
|
|
15
|
+
import { a as normalizeLegacyOnboardAuthChoice, i as isDeprecatedAuthChoice, r as resolveOnboardProviderAuthFlags } from "./auth-choice-prompt-Db0yW_LH.js";
|
|
16
16
|
import { n as logConfigUpdated } from "./logging-Dv2wthF_.js";
|
|
17
|
-
import { a as applyRecommendedInternalHooks, i as isHostedSecurityCapableSession, n as applyHostingSecurity, o as applyOnboardingLocalWorkspaceConfig, r as configureFederationForOnboarding, t as runOnboardingWizard } from "./onboarding-
|
|
17
|
+
import { a as applyRecommendedInternalHooks, i as isHostedSecurityCapableSession, n as applyHostingSecurity, o as applyOnboardingLocalWorkspaceConfig, r as configureFederationForOnboarding, t as runOnboardingWizard } from "./onboarding-BL3becPO.js";
|
|
18
18
|
import { t as WizardCancelledError } from "./prompts-CbbpEiEO.js";
|
|
19
19
|
import { t as createClackPrompter } from "./clack-prompter-Q_PN4iLX.js";
|
|
20
20
|
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BTw_D-6k.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _ as normalizeE164, i as CONFIG_DIR, v as pathExists } from "./agent-paths-DmOVZE7g.js";
|
|
2
2
|
import { $l as runCommandWithTimeout, B as listChatChannels, Bd as listDiscordAccountIds, Dd as listSlackAccountIds, F as createSubsystemLogger, Fd as resolveSignalAccount, Hd as resolveDefaultDiscordAccountId, Hu as resolveDefaultWhatsAppAccountId, Id as listIMessageAccountIds, L as formatChannelPrimerLine, Ld as resolveDefaultIMessageAccountId, Mu as getChannelPlugin, Nd as listSignalAccountIds, Nu as listChannelPlugins, Od as resolveDefaultSlackAccountId, Pd as resolveDefaultSignalAccountId, R as formatChannelSelectionLine, Rd as resolveIMessageAccount, Ud as resolveDiscordAccount, Vu as listWhatsAppAccountIds, Wu as resolveWhatsAppAuthDir, _d as resolveDefaultTelegramAccountId, d as resolveDefaultAgentId, dd as formatCliCommand, gd as listTelegramAccountIds, kd as resolveSlackAccount, ld as stripAnsi, mo as resolveFasedAgentPackageRootSync, ou as extractArchive, u as resolveAgentWorkspaceDir, vd as resolveTelegramAccount, wl as installPluginFromNpmSpec } from "./agent-scope-DHrLr5OF.js";
|
|
3
|
-
import { Ft as resolveSlackUserAllowlist, It as resolveSlackChannelAllowlist, Nt as loadFasedAgentPlugins, la as createPluginLoaderLogger, mn as resolveDiscordChannelAllowlist, pn as resolveDiscordUserAllowlist, zt as detectBinary } from "./reply-
|
|
3
|
+
import { Ft as resolveSlackUserAllowlist, It as resolveSlackChannelAllowlist, Nt as loadFasedAgentPlugins, la as createPluginLoaderLogger, mn as resolveDiscordChannelAllowlist, pn as resolveDiscordUserAllowlist, zt as detectBinary } from "./reply-C6zXCUnw.js";
|
|
4
4
|
import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-LmCHAJTQ.js";
|
|
5
5
|
import { dt as normalizeDiscordSlug } from "./send-jxmRy65D.js";
|
|
6
6
|
import { i as isBlockedHostnameOrIp } from "./ssrf-Blf4NrHS.js";
|
|
@@ -12,7 +12,7 @@ import { t as resolveBrewExecutable } from "./brew-C52GeCeh.js";
|
|
|
12
12
|
import { t as resolveChannelDefaultAccountId } from "./helpers-BvDnvwsE.js";
|
|
13
13
|
import { t as enablePluginInConfig } from "./enable-D3_YPNIT.js";
|
|
14
14
|
import { t as buildNpmResolutionInstallFields } from "./installs-DDbnXe4x.js";
|
|
15
|
-
import { o as finalizeInstalledPluginConfig } from "./lifecycle-
|
|
15
|
+
import { o as finalizeInstalledPluginConfig } from "./lifecycle-CBewhyXk.js";
|
|
16
16
|
import { t as fetchTelegramChatId } from "./api-DLdLLQm_.js";
|
|
17
17
|
import fs, { createWriteStream, readFileSync } from "node:fs";
|
|
18
18
|
import os from "node:os";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $c as installPluginFromNpmSpec, $d as resolveDiscordAccount, $l as listWhatsAppAccountIds, Au as resolveTelegramAccount, Cu as formatCliCommand, Gd as resolveSignalAccount, Gl as listChannelPlugins, Gu as resolveDefaultAgentId, Jd as resolveIMessageAccount, Kd as listIMessageAccountIds, Ld as listSlackAccountIds, Ou as listTelegramAccountIds, Qd as resolveDefaultDiscordAccountId, Rd as resolveDefaultSlackAccountId, Ud as listSignalAccountIds, Wd as resolveDefaultSignalAccountId, Wl as getChannelPlugin, Wu as resolveAgentWorkspaceDir, Xd as listDiscordAccountIds, a as createSubsystemLogger, c as formatChannelSelectionLine, eu as resolveDefaultWhatsAppAccountId, ku as resolveDefaultTelegramAccountId, md as runCommandWithTimeout, nu as resolveWhatsAppAuthDir, pd as resolveFasedAgentPackageRootSync, qd as resolveDefaultIMessageAccountId, s as formatChannelPrimerLine, u as listChatChannels, xl as extractArchive, xu as stripAnsi, zd as resolveSlackAccount } from "./env-C77feXxI.js";
|
|
2
2
|
import { _ as pathExists, g as normalizeE164, i as CONFIG_DIR } from "./agent-paths-BI1hx-tF.js";
|
|
3
3
|
import { dt as normalizeDiscordSlug } from "./send-BFEd4vCM.js";
|
|
4
|
-
import { Oi as createPluginLoaderLogger, Qt as resolveDiscordUserAllowlist, V as resolveDiscordChannelAllowlist, Zt as resolveSlackUserAllowlist, c as loadFasedAgentPlugins, p as detectBinary, u as resolveSlackChannelAllowlist } from "./model-catalog-
|
|
4
|
+
import { Oi as createPluginLoaderLogger, Qt as resolveDiscordUserAllowlist, V as resolveDiscordChannelAllowlist, Zt as resolveSlackUserAllowlist, c as loadFasedAgentPlugins, p as detectBinary, u as resolveSlackChannelAllowlist } from "./model-catalog-Iu_LUOVA.js";
|
|
5
5
|
import { J as DEFAULT_ACCOUNT_ID, Y as normalizeAccountId } from "./entry.js";
|
|
6
6
|
import { i as isBlockedHostnameOrIp } from "./ssrf-CqV2hisj.js";
|
|
7
7
|
import { d as listChannelPluginCatalogEntries, f as resolveChannelPluginExpectedPluginIds, l as formatChannelPluginCatalogSelectionHint, s as isChannelConfigured, u as formatChannelPluginCatalogStatusLine } from "./dangerous-name-matching-CFRKz8Uq.js";
|
|
@@ -12,7 +12,7 @@ import { t as loginWeb } from "./login-CuawnITW.js";
|
|
|
12
12
|
import { t as resolveChannelDefaultAccountId } from "./helpers-BfdkoReO.js";
|
|
13
13
|
import { t as enablePluginInConfig } from "./enable-C4xB2A3x.js";
|
|
14
14
|
import { t as buildNpmResolutionInstallFields } from "./installs-Cha8QIzO.js";
|
|
15
|
-
import { o as finalizeInstalledPluginConfig } from "./lifecycle-
|
|
15
|
+
import { o as finalizeInstalledPluginConfig } from "./lifecycle-CV1zHjpj.js";
|
|
16
16
|
import { t as fetchTelegramChatId } from "./api-uvDKewCP.js";
|
|
17
17
|
import { spawn } from "node:child_process";
|
|
18
18
|
import os from "node:os";
|
|
@@ -2,7 +2,7 @@ import "./paths-C9FmTW1x.js";
|
|
|
2
2
|
import { S as resolveUserPath, i as CONFIG_DIR, m as isRecord } from "./agent-paths-DmOVZE7g.js";
|
|
3
3
|
import { Co as coerceSecretRef, mo as resolveFasedAgentPackageRootSync, wl as installPluginFromNpmSpec } from "./agent-scope-DHrLr5OF.js";
|
|
4
4
|
import "./commands-registry-BRvZQ1jh.js";
|
|
5
|
-
import "./reply-
|
|
5
|
+
import "./reply-C6zXCUnw.js";
|
|
6
6
|
import "./errors-Dx3S3Nrp.js";
|
|
7
7
|
import "./send-C5_fB8YQ.js";
|
|
8
8
|
import "./send-jxmRy65D.js";
|
|
@@ -37,7 +37,7 @@ import "./ssrf-Blf4NrHS.js";
|
|
|
37
37
|
import "./outbound-attachment-CsXJwFsg.js";
|
|
38
38
|
import "./fetch-CnCPOuq7.js";
|
|
39
39
|
import "./delivery-queue-DKRjVFlq.js";
|
|
40
|
-
import "./deps-
|
|
40
|
+
import "./deps-BVNeN6gT.js";
|
|
41
41
|
import "./memory-DDpj0IVA.js";
|
|
42
42
|
import "./memory-search-BwYkW6_V.js";
|
|
43
43
|
import "./manager-BmONwMiP.js";
|
|
@@ -78,10 +78,10 @@ import "./prompt-style-CWAacuMq.js";
|
|
|
78
78
|
import "./pairing-labels-D2yOKhoV.js";
|
|
79
79
|
import { t as enablePluginInConfig } from "./enable-D3_YPNIT.js";
|
|
80
80
|
import { t as buildNpmResolutionInstallFields } from "./installs-DDbnXe4x.js";
|
|
81
|
-
import "./status-
|
|
81
|
+
import "./status-DVTZ42Xi.js";
|
|
82
82
|
import "./update-Dew6hqdf.js";
|
|
83
|
-
import { o as finalizeInstalledPluginConfig } from "./lifecycle-
|
|
84
|
-
import { t as resolvePluginWebSearchProviders } from "./web-search-providers.runtime-
|
|
83
|
+
import { o as finalizeInstalledPluginConfig } from "./lifecycle-CBewhyXk.js";
|
|
84
|
+
import { t as resolvePluginWebSearchProviders } from "./web-search-providers.runtime-DCy32Tl0.js";
|
|
85
85
|
import fs from "node:fs";
|
|
86
86
|
import path from "node:path";
|
|
87
87
|
|
|
@@ -2,7 +2,7 @@ import { $c as installPluginFromNpmSpec, Wa as coerceSecretRef, pd as resolveFas
|
|
|
2
2
|
import { i as CONFIG_DIR, p as isRecord, x as resolveUserPath } from "./agent-paths-BI1hx-tF.js";
|
|
3
3
|
import "./send-D7X0_iFp.js";
|
|
4
4
|
import "./send-BFEd4vCM.js";
|
|
5
|
-
import "./model-catalog-
|
|
5
|
+
import "./model-catalog-Iu_LUOVA.js";
|
|
6
6
|
import "./github-copilot-token-A9DiaCB0.js";
|
|
7
7
|
import "./reply-prefix-TUhpEtvr.js";
|
|
8
8
|
import "./memory-2keYbXkc.js";
|
|
@@ -44,7 +44,7 @@ import "./send-C-su1wPZ.js";
|
|
|
44
44
|
import "./outbound-attachment-Bh4FmcYg.js";
|
|
45
45
|
import "./fetch-BVvWzHT_.js";
|
|
46
46
|
import "./delivery-queue-55Cityuq.js";
|
|
47
|
-
import "./deps-
|
|
47
|
+
import "./deps-Uo5boHSY.js";
|
|
48
48
|
import "./frontmatter-D2UNJikU.js";
|
|
49
49
|
import "./skills-Dis31awJ.js";
|
|
50
50
|
import "./skills-remote-CIAB0AXm.js";
|
|
@@ -75,10 +75,10 @@ import "./prompt-style-Rmj3c-Ir.js";
|
|
|
75
75
|
import "./pairing-labels-BCM1S2e_.js";
|
|
76
76
|
import { t as enablePluginInConfig } from "./enable-C4xB2A3x.js";
|
|
77
77
|
import { t as buildNpmResolutionInstallFields } from "./installs-Cha8QIzO.js";
|
|
78
|
-
import "./status-
|
|
78
|
+
import "./status-C1qehkux.js";
|
|
79
79
|
import "./update-D4rhRm3D.js";
|
|
80
|
-
import { o as finalizeInstalledPluginConfig } from "./lifecycle-
|
|
81
|
-
import { t as resolvePluginWebSearchProviders } from "./web-search-providers.runtime-
|
|
80
|
+
import { o as finalizeInstalledPluginConfig } from "./lifecycle-CV1zHjpj.js";
|
|
81
|
+
import { t as resolvePluginWebSearchProviders } from "./web-search-providers.runtime-BCjJQLBJ.js";
|
|
82
82
|
import path from "node:path";
|
|
83
83
|
import fs from "node:fs";
|
|
84
84
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as resolveStateDir, u as resolveGatewayPort } from "./paths-C9FmTW1x.js";
|
|
2
2
|
import { S as resolveUserPath, U as theme } from "./agent-paths-DmOVZE7g.js";
|
|
3
3
|
import { Ga as ensureAuthProfileStore, Mn as writeConfigFile, Zr as collectConfigServiceEnvVars, d as resolveDefaultAgentId, dd as formatCliCommand, fr as ensureActiveMemoryPluginAllowlisted, kn as readConfigFileSnapshot, u as resolveAgentWorkspaceDir } from "./agent-scope-DHrLr5OF.js";
|
|
4
|
-
import { Bt as detectBrowserOpenSupport, Ht as formatControlUiSshHint, Jt as openUrl, Lt as DEFAULT_WORKSPACE, Mo as runFederationAutoConnectOnce, Qo as findTailscaleBinary, Qt as resolveControlUiLinks, Rt as applyWizardMetadata, Vt as ensureWorkspaceAndSessions, Wt as handleOnboardingRepair, Xo as enableTailscaleFunnel, Xt as probeGatewayReachable, Yt as printWizardHeader, Zo as enableTailscaleServe, Zt as randomToken, en as summarizeExistingConfig, nn as waitForGatewayReachable, qt as normalizeGatewayTokenInput, tn as validateGatewayPasswordInput, xo as normalizeControlUiBasePath, yo as CONTROL_UI_BOOT_CHECK_PATH } from "./reply-
|
|
4
|
+
import { Bt as detectBrowserOpenSupport, Ht as formatControlUiSshHint, Jt as openUrl, Lt as DEFAULT_WORKSPACE, Mo as runFederationAutoConnectOnce, Qo as findTailscaleBinary, Qt as resolveControlUiLinks, Rt as applyWizardMetadata, Vt as ensureWorkspaceAndSessions, Wt as handleOnboardingRepair, Xo as enableTailscaleFunnel, Xt as probeGatewayReachable, Yt as printWizardHeader, Zo as enableTailscaleServe, Zt as randomToken, en as summarizeExistingConfig, nn as waitForGatewayReachable, qt as normalizeGatewayTokenInput, tn as validateGatewayPasswordInput, xo as normalizeControlUiBasePath, yo as CONTROL_UI_BOOT_CHECK_PATH } from "./reply-C6zXCUnw.js";
|
|
5
5
|
import { d as defaultRuntime, f as restoreTerminalState, s as redactSensitiveText } from "./errors-Dx3S3Nrp.js";
|
|
6
6
|
import { a as resolveSignerdBinaryPath, n as installSignerdBinary, o as restartLocalSocketSigner, r as migrateLocalSignerKeystoreToMaterialDir, t as configureWalletForOnboarding } from "./onboarding.wallet-BFJRJg77.js";
|
|
7
7
|
import { i as resolveLocalSignerRunAsUser, n as resolveLocalSignerBackendSocketPath, o as resolveLocalSignerSocketPath, r as resolveLocalSignerMaterialRootDir, t as ensureWalletStateDir } from "./wallet-runtime-config-BlRWvEER.js";
|
|
@@ -17,14 +17,14 @@ import { a as resolveHostedOnboardingGatewayStartupMode, i as resolveGatewayStar
|
|
|
17
17
|
import { d as buildSystemdUnit, r as isSystemdUserServiceAvailable } from "./systemd-CmxDYXvt.js";
|
|
18
18
|
import { t as resolveGatewayService } from "./service-Bsg622jp.js";
|
|
19
19
|
import { n as auditGatewayServiceConfig, t as SERVICE_AUDIT_CODES } from "./service-audit-BRLbvcxT.js";
|
|
20
|
-
import { a as promptRemoteGatewayConfig, n as getTailscaleMissingBinNoteLines, r as setupSkills, t as validateIPv4AddressInput, u as promptCustomApiConfig } from "./ipv4-
|
|
21
|
-
import { o as waitForHostedDashboardBrowserPath } from "./health-
|
|
22
|
-
import { n as warnIfModelConfigLooksOff, r as applyAuthChoice } from "./auth-choice-
|
|
23
|
-
import { t as promptAuthChoiceGrouped } from "./auth-choice-prompt-
|
|
20
|
+
import { a as promptRemoteGatewayConfig, n as getTailscaleMissingBinNoteLines, r as setupSkills, t as validateIPv4AddressInput, u as promptCustomApiConfig } from "./ipv4-Cb1Ofo1o.js";
|
|
21
|
+
import { o as waitForHostedDashboardBrowserPath } from "./health-GSYUFoyr.js";
|
|
22
|
+
import { n as warnIfModelConfigLooksOff, r as applyAuthChoice } from "./auth-choice-BTahePAl.js";
|
|
23
|
+
import { t as promptAuthChoiceGrouped } from "./auth-choice-prompt-Db0yW_LH.js";
|
|
24
24
|
import { n as logConfigUpdated } from "./logging-Dv2wthF_.js";
|
|
25
|
-
import { n as setupChannels } from "./onboard-channels-
|
|
25
|
+
import { n as setupChannels } from "./onboard-channels-B3tCPpRS.js";
|
|
26
26
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-BielXMUB.js";
|
|
27
|
-
import { t as runTui } from "./tui-
|
|
27
|
+
import { t as runTui } from "./tui-D6_aw9hu.js";
|
|
28
28
|
import fs from "node:fs";
|
|
29
29
|
import os from "node:os";
|
|
30
30
|
import path from "node:path";
|
|
@@ -32,6 +32,7 @@ import fs$1 from "node:fs/promises";
|
|
|
32
32
|
import { spawn, spawnSync } from "node:child_process";
|
|
33
33
|
import { Writable } from "node:stream";
|
|
34
34
|
import net from "node:net";
|
|
35
|
+
import { Buffer as Buffer$1 } from "node:buffer";
|
|
35
36
|
|
|
36
37
|
//#region src/commands/onboard-config.ts
|
|
37
38
|
const ONBOARDING_DEFAULT_DM_SCOPE = "per-channel-peer";
|
|
@@ -3001,9 +3002,10 @@ function formatLocalDeviceTailnetRequirementNote() {
|
|
|
3001
3002
|
""
|
|
3002
3003
|
].join("\n");
|
|
3003
3004
|
}
|
|
3004
|
-
function formatTailnetSshVerificationNote(target) {
|
|
3005
|
+
function formatTailnetSshVerificationNote(target, method = "ssh-key") {
|
|
3005
3006
|
const pingTargets = [target.host, target.ipv4 && target.ipv4 !== target.host ? target.ipv4 : void 0].filter((value) => Boolean(value));
|
|
3006
3007
|
const sshTargets = pingTargets;
|
|
3008
|
+
const sshCommands = method === "tailscale-ssh" ? sshTargets.map((host) => `tailscale ssh ${target.user}@${host}`) : sshTargets.map((host) => `ssh ${target.user}@${host}`);
|
|
3007
3009
|
return [
|
|
3008
3010
|
noteStep(1, "Check visibility"),
|
|
3009
3011
|
"Run on your own computer:",
|
|
@@ -3016,32 +3018,150 @@ function formatTailnetSshVerificationNote(target) {
|
|
|
3016
3018
|
"",
|
|
3017
3019
|
noteStep(2, "SSH into VPS"),
|
|
3018
3020
|
"Run one command:",
|
|
3019
|
-
...
|
|
3021
|
+
...method === "tailscale-ssh" ? ["No app SSH key was found on this VPS.", "Use Tailscale SSH from your own Tailscale-connected computer:"] : [],
|
|
3022
|
+
...noteCommands(sshCommands),
|
|
3020
3023
|
`Continue only after SSH opens in ${target.repoDir}.`,
|
|
3021
3024
|
"",
|
|
3022
3025
|
noteHeading("Fallback"),
|
|
3023
|
-
noteWarn("If hostname lookup fails, keep the other VPN off and use the `100.x.x.x` command.")
|
|
3026
|
+
noteWarn(method === "tailscale-ssh" ? "If Tailscale SSH is unavailable in your tailnet, choose the SSH public key fallback." : "If hostname lookup fails, keep the other VPN off and use the `100.x.x.x` command.")
|
|
3024
3027
|
].join("\n");
|
|
3025
3028
|
}
|
|
3029
|
+
function formatTailnetSshPublicKeyNote(target) {
|
|
3030
|
+
return [
|
|
3031
|
+
noteStep(1, "Find your public key"),
|
|
3032
|
+
"Use this fallback only when Tailscale SSH is unavailable in your tailnet.",
|
|
3033
|
+
"Do this on your own computer while this VPS installer stays open.",
|
|
3034
|
+
...noteCommands(["cat ~/.ssh/id_ed25519.pub", "type $env:USERPROFILE\\.ssh\\id_ed25519.pub"]),
|
|
3035
|
+
noteWarn("Paste a `.pub` key only. Never paste a private key."),
|
|
3036
|
+
"",
|
|
3037
|
+
noteStep(2, "Create one if needed"),
|
|
3038
|
+
"Run this on your own computer, then paste the `.pub` line here:",
|
|
3039
|
+
...noteCommands(["ssh-keygen -t ed25519 -C \"fased-vps\" -f ~/.ssh/id_ed25519"]),
|
|
3040
|
+
"",
|
|
3041
|
+
noteStep(3, "What Fased will do"),
|
|
3042
|
+
`Install that public key for ${target.user} at /home/${target.user}/.ssh/authorized_keys.`,
|
|
3043
|
+
"Then you will test regular SSH over Tailscale before root/password access is locked down."
|
|
3044
|
+
].join("\n");
|
|
3045
|
+
}
|
|
3046
|
+
function normalizeSshPublicKeys(input) {
|
|
3047
|
+
const acceptedTypes = new Set([
|
|
3048
|
+
"ecdsa-sha2-nistp256",
|
|
3049
|
+
"ecdsa-sha2-nistp384",
|
|
3050
|
+
"ecdsa-sha2-nistp521",
|
|
3051
|
+
"sk-ecdsa-sha2-nistp256@openssh.com",
|
|
3052
|
+
"sk-ssh-ed25519@openssh.com",
|
|
3053
|
+
"ssh-ed25519",
|
|
3054
|
+
"ssh-rsa"
|
|
3055
|
+
]);
|
|
3056
|
+
const lines = input.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
3057
|
+
if (lines.length === 0) return {
|
|
3058
|
+
ok: false,
|
|
3059
|
+
keys: [],
|
|
3060
|
+
detail: "Paste one SSH public key line."
|
|
3061
|
+
};
|
|
3062
|
+
if (lines.some((line) => /^-{5}BEGIN\b/i.test(line) || /PRIVATE KEY/i.test(line))) return {
|
|
3063
|
+
ok: false,
|
|
3064
|
+
keys: [],
|
|
3065
|
+
detail: "That looks like a private key. Paste the `.pub` key only."
|
|
3066
|
+
};
|
|
3067
|
+
const normalized = [];
|
|
3068
|
+
for (const line of lines) {
|
|
3069
|
+
const parts = line.split(/\s+/);
|
|
3070
|
+
const keyType = parts[0] ?? "";
|
|
3071
|
+
const keyBody = parts[1] ?? "";
|
|
3072
|
+
if (!acceptedTypes.has(keyType) || !/^[A-Za-z0-9+/]+={0,3}$/.test(keyBody)) return {
|
|
3073
|
+
ok: false,
|
|
3074
|
+
keys: [],
|
|
3075
|
+
detail: "Paste a valid OpenSSH public key, for example `ssh-ed25519 AAAA... user@computer`."
|
|
3076
|
+
};
|
|
3077
|
+
normalized.push(parts.join(" "));
|
|
3078
|
+
}
|
|
3079
|
+
return {
|
|
3080
|
+
ok: true,
|
|
3081
|
+
keys: Array.from(new Set(normalized))
|
|
3082
|
+
};
|
|
3083
|
+
}
|
|
3084
|
+
function buildInstallTailnetSshAuthorizedKeysCommand(target, keys) {
|
|
3085
|
+
const sshDir = `/home/${target.user}/.ssh`;
|
|
3086
|
+
const authorizedKeys = `${sshDir}/authorized_keys`;
|
|
3087
|
+
const encodedKeys = Buffer$1.from(`${keys.join("\n")}\n`, "utf8").toString("base64");
|
|
3088
|
+
return [
|
|
3089
|
+
"set -e",
|
|
3090
|
+
"umask 077",
|
|
3091
|
+
`mkdir -p ${shellQuote(sshDir)}`,
|
|
3092
|
+
"tmp_keys=\"$(mktemp)\"",
|
|
3093
|
+
"tmp_merged=\"$(mktemp)\"",
|
|
3094
|
+
`printf '%s' ${shellQuote(encodedKeys)} | base64 -d > "$tmp_keys"`,
|
|
3095
|
+
`{ cat ${shellQuote(authorizedKeys)} 2>/dev/null || true; cat "$tmp_keys"; } | awk 'NF { print }' | sort -u > "$tmp_merged"`,
|
|
3096
|
+
`install -m 600 "$tmp_merged" ${shellQuote(authorizedKeys)}`,
|
|
3097
|
+
`chmod 700 ${shellQuote(sshDir)}`,
|
|
3098
|
+
`chmod 600 ${shellQuote(authorizedKeys)}`,
|
|
3099
|
+
"rm -f \"$tmp_keys\" \"$tmp_merged\""
|
|
3100
|
+
].join("\n");
|
|
3101
|
+
}
|
|
3102
|
+
async function ensureTailnetSshAuthorizedKeys(params) {
|
|
3103
|
+
const { target, logPath, runtime, prompter, runner } = params;
|
|
3104
|
+
const authorizedKeys = `/home/${target.user}/.ssh/authorized_keys`;
|
|
3105
|
+
if (runner(`test -s ${shellQuote(authorizedKeys)}`, logPath).ok) return true;
|
|
3106
|
+
await prompter.note(formatTailnetSshPublicKeyNote(target), "SSH key fallback");
|
|
3107
|
+
const parsed = normalizeSshPublicKeys(await prompter.text({
|
|
3108
|
+
message: `Paste the SSH public key to install for ${target.user}`,
|
|
3109
|
+
placeholder: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@computer",
|
|
3110
|
+
validate: (value) => {
|
|
3111
|
+
const parsed = normalizeSshPublicKeys(value);
|
|
3112
|
+
return parsed.ok ? void 0 : parsed.detail;
|
|
3113
|
+
}
|
|
3114
|
+
}));
|
|
3115
|
+
if (!parsed.ok) {
|
|
3116
|
+
runtime.error("Hosting setup stopped before SSH/firewall lock-down.");
|
|
3117
|
+
runtime.error(parsed.detail);
|
|
3118
|
+
runtime.error(`Host hardening log: ${logPath}`);
|
|
3119
|
+
runtime.exit(1);
|
|
3120
|
+
return false;
|
|
3121
|
+
}
|
|
3122
|
+
const installResult = runner(buildInstallTailnetSshAuthorizedKeysCommand(target, parsed.keys), logPath);
|
|
3123
|
+
if (!installResult.ok) {
|
|
3124
|
+
runtime.error("Hosting setup stopped before SSH/firewall lock-down.");
|
|
3125
|
+
runtime.error(`Could not install SSH public key for ${target.user}: ${authorizedKeys}`);
|
|
3126
|
+
runtime.error(installResult.detail ?? "unknown SSH key install error");
|
|
3127
|
+
runtime.error(`Host hardening log: ${logPath}`);
|
|
3128
|
+
runtime.exit(1);
|
|
3129
|
+
return false;
|
|
3130
|
+
}
|
|
3131
|
+
if (!runner(`test -s ${shellQuote(authorizedKeys)}`, logPath).ok) {
|
|
3132
|
+
runtime.error("Hosting setup stopped before SSH/firewall lock-down.");
|
|
3133
|
+
runtime.error(`SSH public key was not written for ${target.user}: ${authorizedKeys}`);
|
|
3134
|
+
runtime.error(`Host hardening log: ${logPath}`);
|
|
3135
|
+
runtime.exit(1);
|
|
3136
|
+
return false;
|
|
3137
|
+
}
|
|
3138
|
+
appendHostSecurityLog(logPath, "tailnet ssh public key installed", `installed ${parsed.keys.length} public key(s) for ${target.user}: ${authorizedKeys}`);
|
|
3139
|
+
return true;
|
|
3140
|
+
}
|
|
3026
3141
|
function verifyTailnetSshServerPrerequisites(params) {
|
|
3027
3142
|
const runner = params.runner ?? run;
|
|
3028
3143
|
const target = params.target;
|
|
3029
3144
|
const checks = [];
|
|
3030
3145
|
const failures = [];
|
|
3146
|
+
let method = "tailscale-ssh";
|
|
3031
3147
|
if (runner(`test -d ${shellQuote(target.repoDir)}`, params.logPath).ok) checks.push(`repo directory ready: ${target.repoDir}`);
|
|
3032
3148
|
else failures.push(`missing app repo directory: ${target.repoDir}`);
|
|
3033
3149
|
const authorizedKeys = `/home/${target.user}/.ssh/authorized_keys`;
|
|
3034
|
-
if (runner(`test -s ${shellQuote(authorizedKeys)}`, params.logPath).ok)
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3150
|
+
if (runner(`test -s ${shellQuote(authorizedKeys)}`, params.logPath).ok) {
|
|
3151
|
+
method = "ssh-key";
|
|
3152
|
+
checks.push(`SSH keys ready: ${authorizedKeys}`);
|
|
3153
|
+
if (runner("systemctl is-active --quiet ssh || systemctl is-active --quiet sshd || sudo -n systemctl is-active --quiet ssh || sudo -n systemctl is-active --quiet sshd", params.logPath).ok) checks.push("OS SSH service active");
|
|
3154
|
+
else failures.push("OS SSH service is not active");
|
|
3155
|
+
} else checks.push(`no app SSH keys at ${authorizedKeys}; using Tailscale SSH`);
|
|
3038
3156
|
if (failures.length > 0) return {
|
|
3039
3157
|
ok: false,
|
|
3040
|
-
detail: failures.join("\n")
|
|
3158
|
+
detail: failures.join("\n"),
|
|
3159
|
+
method
|
|
3041
3160
|
};
|
|
3042
3161
|
return {
|
|
3043
3162
|
ok: true,
|
|
3044
|
-
detail: checks.join("\n")
|
|
3163
|
+
detail: checks.join("\n"),
|
|
3164
|
+
method
|
|
3045
3165
|
};
|
|
3046
3166
|
}
|
|
3047
3167
|
function ensureTailnetSshIngressForVerification(params) {
|
|
@@ -3075,8 +3195,9 @@ function hasExplicitTailnetSshConfirmation(env = process.env) {
|
|
|
3075
3195
|
}
|
|
3076
3196
|
function failTailnetSshConfirmation(params) {
|
|
3077
3197
|
const { runtime, logPath, target } = params;
|
|
3198
|
+
const commandPrefix = params.method === "tailscale-ssh" ? "tailscale ssh" : "ssh";
|
|
3078
3199
|
runtime.error("Hosting setup stopped before SSH/firewall lock-down.");
|
|
3079
|
-
runtime.error(`Confirm SSH over Tailscale first:
|
|
3200
|
+
runtime.error(`Confirm SSH over Tailscale first: ${commandPrefix} ${target.user}@${target.host}`);
|
|
3080
3201
|
runtime.error(`Expected app repo directory after login: ${target.repoDir}`);
|
|
3081
3202
|
runtime.error(`Host hardening log: ${logPath}`);
|
|
3082
3203
|
runtime.exit(1);
|
|
@@ -3095,10 +3216,16 @@ async function confirmTailnetSshBeforeLockdown(params) {
|
|
|
3095
3216
|
return true;
|
|
3096
3217
|
}
|
|
3097
3218
|
if (!prompter || opts.nonInteractive === true) {
|
|
3219
|
+
const serverPrereqs = verifyTailnetSshServerPrerequisites({
|
|
3220
|
+
target,
|
|
3221
|
+
logPath,
|
|
3222
|
+
runner
|
|
3223
|
+
});
|
|
3098
3224
|
failTailnetSshConfirmation({
|
|
3099
3225
|
runtime,
|
|
3100
3226
|
logPath,
|
|
3101
|
-
target
|
|
3227
|
+
target,
|
|
3228
|
+
method: serverPrereqs.method
|
|
3102
3229
|
});
|
|
3103
3230
|
return false;
|
|
3104
3231
|
}
|
|
@@ -3116,20 +3243,22 @@ async function confirmTailnetSshBeforeLockdown(params) {
|
|
|
3116
3243
|
return false;
|
|
3117
3244
|
}
|
|
3118
3245
|
appendHostSecurityLog(logPath, "tailnet ssh server prerequisites", serverPrereqs.detail);
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3246
|
+
if (serverPrereqs.method === "ssh-key") {
|
|
3247
|
+
const ingress = ensureTailnetSshIngressForVerification({
|
|
3248
|
+
logPath,
|
|
3249
|
+
runner
|
|
3250
|
+
});
|
|
3251
|
+
if (!ingress.ok) {
|
|
3252
|
+
runtime.error("Hosting setup stopped before SSH/firewall lock-down.");
|
|
3253
|
+
runtime.error("Could not prepare the tailnet-only SSH firewall rule required for verification.");
|
|
3254
|
+
runtime.error(ingress.detail ?? "unknown firewall error");
|
|
3255
|
+
runtime.error(`Host hardening log: ${logPath}`);
|
|
3256
|
+
runtime.exit(1);
|
|
3257
|
+
return false;
|
|
3258
|
+
}
|
|
3259
|
+
appendHostSecurityLog(logPath, "tailnet ssh ingress prepared for verification", ingress.detail);
|
|
3260
|
+
} else appendHostSecurityLog(logPath, "tailnet ssh verification mode", "using Tailscale SSH because app authorized_keys is empty");
|
|
3261
|
+
await prompter.note(formatTailnetSshVerificationNote(target, serverPrereqs.method), "Verify SSH over Tailscale");
|
|
3133
3262
|
if (!await prompter.confirm({
|
|
3134
3263
|
message: "Did tailscale ping find this VPS from your own computer?",
|
|
3135
3264
|
initialValue: false
|
|
@@ -3141,7 +3270,8 @@ async function confirmTailnetSshBeforeLockdown(params) {
|
|
|
3141
3270
|
failTailnetSshConfirmation({
|
|
3142
3271
|
runtime,
|
|
3143
3272
|
logPath,
|
|
3144
|
-
target
|
|
3273
|
+
target,
|
|
3274
|
+
method: serverPrereqs.method
|
|
3145
3275
|
});
|
|
3146
3276
|
return false;
|
|
3147
3277
|
}
|
|
@@ -3164,13 +3294,29 @@ async function confirmTailnetSshBeforeLockdown(params) {
|
|
|
3164
3294
|
continue;
|
|
3165
3295
|
}
|
|
3166
3296
|
if (!await prompter.confirm({
|
|
3167
|
-
message: `Did SSH over Tailscale connect as ${target.user} and open ${target.repoDir}?`,
|
|
3297
|
+
message: serverPrereqs.method === "tailscale-ssh" ? `Did Tailscale SSH connect as ${target.user} and open ${target.repoDir}?` : `Did SSH over Tailscale connect as ${target.user} and open ${target.repoDir}?`,
|
|
3168
3298
|
initialValue: false
|
|
3169
3299
|
})) {
|
|
3300
|
+
if (serverPrereqs.method === "tailscale-ssh") {
|
|
3301
|
+
if (await prompter.confirm({
|
|
3302
|
+
message: "Use SSH public key fallback instead?",
|
|
3303
|
+
initialValue: false
|
|
3304
|
+
})) {
|
|
3305
|
+
if (!await ensureTailnetSshAuthorizedKeys({
|
|
3306
|
+
target,
|
|
3307
|
+
logPath,
|
|
3308
|
+
runtime,
|
|
3309
|
+
prompter,
|
|
3310
|
+
runner
|
|
3311
|
+
})) return false;
|
|
3312
|
+
continue;
|
|
3313
|
+
}
|
|
3314
|
+
}
|
|
3170
3315
|
failTailnetSshConfirmation({
|
|
3171
3316
|
runtime,
|
|
3172
3317
|
logPath,
|
|
3173
|
-
target
|
|
3318
|
+
target,
|
|
3319
|
+
method: serverPrereqs.method
|
|
3174
3320
|
});
|
|
3175
3321
|
return false;
|
|
3176
3322
|
}
|