@fased/fased 0.1.29 → 0.1.31
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/CHANGELOG.md +7 -0
- package/dist/{active-listener-Dmc7Xtuo.js → active-listener-Bw8DT1EX.js} +1 -1
- package/dist/{agent-scope-BYecP9O5.js → agent-scope-Bx0XQq3s.js} +124 -124
- package/dist/{agents-QMBcc8LJ.js → agents-B7oe96FC.js} +8 -8
- package/dist/{attachment-normalize-DwmM8lOf.js → attachment-normalize-B-UXOsKN.js} +1 -1
- package/dist/{attachment-normalize-BMCew2Ey.js → attachment-normalize-Ch3m3gW7.js} +1 -1
- package/dist/{audio-preflight-CTI1mqLA.js → audio-preflight-BLnXSrbe.js} +1 -1
- package/dist/{audio-preflight-CJGUVWFw.js → audio-preflight-DWAgAnFF.js} +2 -2
- package/dist/{audio-preflight-CNlrMezK.js → audio-preflight-DWXq2U0B.js} +2 -2
- package/dist/{audio-preflight-C_vYWlCY.js → audio-preflight-JeAEvjmi.js} +2 -2
- package/dist/{audio-preflight-C7z6lGot.js → audio-preflight-UFD3iTyT.js} +31 -31
- package/dist/{audit-Bxa7rPQ-.js → audit-C11zzpna.js} +1 -1
- package/dist/{audit-Bfagv6Q_.js → audit-uEYwrVh1.js} +1 -1
- package/dist/{auth-choice-sv4bQ9hn.js → auth-choice-CvM0GCEt.js} +1 -1
- package/dist/{auth-choice-CifBEhbT.js → auth-choice-fxfJkTWE.js} +1 -1
- package/dist/{auth-choice-prompt-B_-nyE2Q.js → auth-choice-prompt-CZWGTWFF.js} +1 -1
- package/dist/{auth-choice-prompt-CCj2g7-t.js → auth-choice-prompt-DgZ_-DFR.js} +1 -1
- package/dist/{auth-BnPTjUVe.js → auth-miYdUxcO.js} +5 -5
- 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-D69hLBEQ.js → channel-activity-BvC4RbBO.js} +1 -1
- package/dist/{channel-web-DEL7MdSZ.js → channel-web-CEpBiX-Q.js} +1 -1
- package/dist/{channel-web-IeOqPSI7.js → channel-web-DRFSKnVi.js} +1 -1
- package/dist/{channels-B4mOixPh.js → channels-Bzj2_yUj.js} +6 -6
- package/dist/{channels-3joUoQXH.js → channels-CY1sX0bz.js} +6 -6
- package/dist/{channels-cli-UrsljhH0.js → channels-cli-BruuPCkp.js} +5 -5
- package/dist/{channels-cli-BKOmeL07.js → channels-cli-CRfpkLwo.js} +5 -5
- package/dist/{chunk-KatG8h1H.js → chunk-CiQeXMLG.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-Aorf7_c_.js → cli-BXBAZCT8.js} +2 -2
- package/dist/{cli-Cf9cX445.js → cli-BgodEMPl.js} +2 -2
- package/dist/{command-registry-DSG9UhC4.js → command-registry-CU64eZmw.js} +9 -9
- package/dist/{commands-registry-CG-_VuYC.js → commands-registry-t0hu8c_Z.js} +1 -1
- package/dist/{completion-cli-BacXX8YP.js → completion-cli-CWke3Y2I.js} +1 -1
- package/dist/{completion-cli-atZPWxpk.js → completion-cli-DNlt3cBf.js} +2 -2
- package/dist/{config-cli-CAylLKEL.js → config-cli-BugbkifH.js} +1 -1
- package/dist/{config-cli-B6hmwh3V.js → config-cli-DTLNqY4I.js} +1 -1
- package/dist/{config-eval-DxNYxraZ.js → config-eval-CLXDBlCw.js} +3 -3
- package/dist/{configure-CFGxKEvE.js → configure-BYcI4db_.js} +12 -12
- package/dist/{configure-IVfhSGuI.js → configure-XZxBL9XF.js} +12 -12
- package/dist/control-ui/assets/app-DXYMrRJ9.js.map +1 -1
- package/dist/{cron-cli-C_WdKzEb.js → cron-cli-BAT3nsi8.js} +2 -2
- package/dist/{cron-cli-BH5kAloM.js → cron-cli-BzceMqJm.js} +2 -2
- package/dist/{daemon-cli-DVu8h_ms.js → daemon-cli-5_eqnI7H.js} +77 -38
- package/dist/{daemon-cli-tLppiRYp.js → daemon-cli-JvoxFHRy.js} +77 -38
- package/dist/daemon-cli.js +76 -37
- package/dist/{deps-ByxeDZxS.js → deps-BWahcXVa.js} +1 -1
- package/dist/{deps-D7pGfos8.js → deps-CkOczIqw.js} +1 -1
- package/dist/{diagnostic-BYQE13k1.js → diagnostic-C6MSQFZF.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +2 -2
- package/dist/{fetch-CYWabNXm.js → fetch-BwkjkjT6.js} +1 -1
- package/dist/{fetch-guard-CNlKZ01R.js → fetch-guard-DdMratk8.js} +1 -1
- package/dist/{filesystem-manager-CWbYjhcQ.js → filesystem-manager-B8V6mEya.js} +4 -4
- package/dist/{fs-safe-T802CTm-.js → fs-safe-CrX7hR24.js} +2 -2
- package/dist/{gateway-cli-DNHD_N4M.js → gateway-cli-D0rc9BQT.js} +27 -27
- package/dist/{gateway-cli-sPMmhMYS.js → gateway-cli-DZwQlnd-.js} +27 -27
- package/dist/{github-copilot-token-eyrRGmGp.js → github-copilot-token-DYrFvncE.js} +8 -8
- package/dist/{health-Cn7Uypmr.js → health-CtFbngOI.js} +2 -2
- package/dist/{health-Ds6nghRW.js → health-Dx0abJui.js} +2 -2
- package/dist/{heartbeat-runner-DZd7FWr_.js → heartbeat-runner-CnzA9MCj.js} +1 -1
- package/dist/{heartbeat-runner-DPf55KvT.js → heartbeat-runner-DBcCEPYX.js} +1 -1
- package/dist/{hooks-cli-Ds0rAsrn.js → hooks-cli-C4nrKQB8.js} +3 -3
- package/dist/{hooks-cli-CklgZPuq.js → hooks-cli-ED4F4hgZ.js} +3 -3
- package/dist/index.js +7 -7
- package/dist/{internal-CGfrGFGR.js → internal-QlbJb-4V.js} +3 -3
- package/dist/{ipv4-woqSIZCG.js → ipv4-BiVsHcPZ.js} +2 -2
- package/dist/{ipv4-QXi6T-GC.js → ipv4-p6oBdL3i.js} +2 -2
- package/dist/{lifecycle-CDyiQkdm.js → lifecycle-DN1VLZsk.js} +1 -1
- package/dist/{lifecycle-Bt1wvv49.js → lifecycle-DXPbWOOF.js} +1 -1
- package/dist/{list.auth-overview-DTmoeKoz.js → list.auth-overview-SGV043-s.js} +1 -1
- package/dist/{list.auth-overview-BZLsTF6m.js → list.auth-overview-qQ-PSQWI.js} +1 -1
- package/dist/llm-slug-generator.js +31 -31
- package/dist/{login-H3-M4-wp.js → login-BGt2KP5c.js} +2 -2
- package/dist/{login-qr-DIly-pBD.js → login-qr-CDDF5Ark.js} +3 -3
- package/dist/{manager-ZRPdFyMZ.js → manager-BfodMNDG.js} +8 -8
- package/dist/{markdown-tables-KcZiNfqg.js → markdown-tables-C-HEtwaC.js} +1 -1
- package/dist/{media-93Hw7QIY.js → media-CInvDVc0.js} +5 -5
- package/dist/{memory-search-CueDEO0U.js → memory-search-BZt8FFLW.js} +2 -2
- package/dist/{model-catalog-CKJx3TlL.js → model-catalog-DTeRSOlM.js} +6 -6
- package/dist/{models-B3gfHQID.js → models-DNWCoAr6.js} +4 -4
- package/dist/{models-cli-DTH6o8Ah.js → models-cli-6JDQwXLP.js} +4 -4
- package/dist/{models-cli-C7_F9hA_.js → models-cli-8Ogt1Nai.js} +5 -5
- package/dist/{node-cli-CuA0F8du.js → node-cli-B5XUZW_F.js} +2 -2
- package/dist/{node-cli-BrZNQWK0.js → node-cli-BPQ4Bj27.js} +2 -2
- package/dist/{onboard-wtRNFZSO.js → onboard-Bkmx2_JM.js} +6 -6
- package/dist/{onboard-BLjJLsrb.js → onboard-CoIQYNfB.js} +6 -6
- package/dist/{onboard-channels-CpYQ-jzg.js → onboard-channels-6l52GEWY.js} +2 -2
- package/dist/{onboard-channels-BpexXVlv.js → onboard-channels-B-CHfy-_.js} +2 -2
- package/dist/{onboard-search-CudukQ0P.js → onboard-search-CXl_FBtA.js} +5 -5
- package/dist/{onboard-search-D4eUoAEq.js → onboard-search-DitZYPTM.js} +5 -5
- package/dist/{onboarding-DZphW3tC.js → onboarding-BAdN-hFD.js} +7 -7
- package/dist/{onboarding-beY-khSY.js → onboarding-DnPBiIlf.js} +7 -7
- package/dist/{openresponses-http-COlqXAAY.js → openresponses-http-C4uMHFQG.js} +2 -2
- package/dist/{openresponses-http-YZhTuhkt.js → openresponses-http-CWOcu9i9.js} +31 -31
- package/dist/{openresponses-http-BDR_C5c5.js → openresponses-http-CdFdfFbo.js} +1 -1
- package/dist/{openresponses-http-lRWgsixx.js → openresponses-http-CgJamjpH.js} +2 -2
- package/dist/{openresponses-http-C3HFR4b5.js → openresponses-http-cj2oimfW.js} +2 -2
- package/dist/{outbound-C7mwBvhN.js → outbound-CfdOHhpP.js} +6 -6
- package/dist/{outbound-attachment-DILp822M.js → outbound-attachment-BL6wK70V.js} +2 -2
- package/dist/{parent-default-help-D6zpkza-.js → parent-default-help-BT7FBzs-.js} +1 -1
- package/dist/{parent-default-help-BHi1y6z-.js → parent-default-help-ecMFlg2S.js} +1 -1
- package/dist/{path-alias-guards-DyTCSx8q.js → path-alias-guards-Dalcwl5X.js} +1 -1
- package/dist/{paths-DBTQPSY5.js → paths-BrYFwmxy.js} +22 -22
- package/dist/{paths-6Y-iET7k.js → paths-DGN5lNb7.js} +9 -9
- package/dist/{pi-embedded-B6SkkATJ.js → pi-embedded-BMW4AO0b.js} +239 -239
- package/dist/{pi-embedded-e2Be1Pic.js → pi-embedded-YWZsPSdf.js} +14 -14
- package/dist/{pi-model-discovery--TE7j7VE.js → pi-model-discovery-C1CAe7eM.js} +7 -7
- package/dist/pi-model-discovery-runtime-C34IWfDn.js +5 -0
- package/dist/{plugin-registry-CAsF45o1.js → plugin-registry-CwfvRSs4.js} +1 -1
- package/dist/{plugin-registry-D8bNkXOq.js → plugin-registry-DA_1IBe0.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-BMNjQ8Qw.js → audio-preflight-B-GNQeK0.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-BjpOTfAA.js → audio-preflight-DeP8VHC6.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.js +1 -1
- package/dist/plugin-sdk/{channel-web-Dd48mC59.js → channel-web-QaRgsb6f.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-iXBH6NN_.js → openresponses-http-BISP9-A6.js} +1 -1
- package/dist/plugin-sdk/{openresponses-http-xYU4ta96.js → openresponses-http-DenlQldm.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DaiqegxK.js → pi-model-discovery-runtime-CwXjrUIM.js} +1 -1
- package/dist/plugin-sdk/{registry-D1bAj51G.js → registry-C90cYLNB.js} +8 -8
- package/dist/plugin-sdk/{reply-CwbNFNQd.js → reply-DQSn23Jt.js} +5 -5
- package/dist/plugin-sdk/src/brand.d.ts +2 -2
- package/dist/plugin-sdk/{status-sQR6iMdb.js → status-CkAJPulJ.js} +5 -5
- package/dist/plugin-sdk/{web-Q7_F3_66.js → web-0HkZCM7O.js} +2 -2
- package/dist/plugin-sdk/{web-BWOUsR2H.js → web-Cav7vEAd.js} +1 -1
- package/dist/{plugins-cli-CmFo39YO.js → plugins-cli-CIumz1mA.js} +5 -5
- package/dist/{plugins-cli-b28IZl2q.js → plugins-cli-NtgUFN5F.js} +5 -5
- package/dist/{program-b-bJ3jAf.js → program-CSz1D1dG.js} +7 -7
- package/dist/{program-context-C8TpaeJh.js → program-context-DI-GvkMR.js} +24 -24
- package/dist/{prompt-select-styled--unDG0y5.js → prompt-select-styled-n_A35tSP.js} +4 -4
- package/dist/{prompt-select-styled-BBW8ExAu.js → prompt-select-styled-vQMrGEwY.js} +4 -4
- package/dist/{pw-ai-4dv28kg0.js → pw-ai-AEM6NhZt.js} +5 -5
- package/dist/{pw-ai-DuNzIjgi.js → pw-ai-BaQ88hEN.js} +1 -1
- package/dist/{qmd-manager-DA3v0Y-t.js → qmd-manager-CVbI17-v.js} +5 -5
- package/dist/{qmd-scope-Byk5KlGv.js → qmd-scope-CL7VCB5M.js} +1 -1
- package/dist/{query-expansion-CGVFZR8O.js → query-expansion-DrMLz38Q.js} +2 -2
- package/dist/{register.agent-DXdz6bc0.js → register.agent-CpHR4A6v.js} +8 -8
- package/dist/{register.agent-te7qVBoR.js → register.agent-DD-U7oGb.js} +9 -9
- package/dist/{register.configure-DjSmILA-.js → register.configure-C3qRt8Z2.js} +12 -12
- package/dist/{register.configure-u_mElz3G.js → register.configure-CsmE4__F.js} +12 -12
- package/dist/{register.maintenance-CKx-2ze7.js → register.maintenance-C1pTDCfr.js} +9 -9
- package/dist/{register.maintenance-BMe88N2s.js → register.maintenance-Dw9XWs6B.js} +8 -8
- package/dist/{register.message-D3P3PbvS.js → register.message-C5H4BaZR.js} +3 -3
- package/dist/{register.message-CWpF1VfE.js → register.message-D1vEgAqq.js} +3 -3
- package/dist/{register.onboard-DtcpAkW4.js → register.onboard-C2ZqqRHb.js} +14 -14
- package/dist/{register.onboard-0rmVJjLc.js → register.onboard-Dd5wooum.js} +14 -14
- package/dist/{register.setup-C5agvuLZ.js → register.setup-S47GDXlI.js} +14 -14
- package/dist/{register.setup-Do3sWvmu.js → register.setup-wdsoq3BF.js} +14 -14
- package/dist/{register.status-health-sessions-DTOl2ffn.js → register.status-health-sessions-BoN2hOA8.js} +6 -6
- package/dist/{register.status-health-sessions-C3wrI8Rw.js → register.status-health-sessions-C876VSZh.js} +6 -6
- package/dist/{register.subclis-BmntpHBV.js → register.subclis-BT84Bn-_.js} +16 -16
- package/dist/{replies-oXYe4wxf.js → replies-DEtI8EHM.js} +2 -2
- package/dist/{reply-5d_FBb8m.js → reply-jrONH9Y7.js} +6 -6
- package/dist/{reply-prefix-DZjj9KHV.js → reply-prefix-DVyUjzCQ.js} +1 -1
- package/dist/{resolve-route-D3-NnOVE.js → resolve-route-Dc1L-NXd.js} +1 -1
- package/dist/{run-main-D9Fxy0Hu.js → run-main-C6XcZlLi.js} +14 -14
- package/dist/{runtime-helper-grants-BQYP50-i.js → runtime-helper-grants-Jas30vI5.js} +1 -1
- package/dist/{runtime-helper-grants-CqyGNc1k.js → runtime-helper-grants-kih7jkmx.js} +1 -1
- package/dist/{sandbox-cli-g26xYeMo.js → sandbox-cli-Bfj6NbE1.js} +2 -2
- package/dist/{sandbox-cli-Kf_iEEKT.js → sandbox-cli-C9wECeaH.js} +2 -2
- package/dist/{security-cli-BXd-xPab.js → security-cli-B1c376KU.js} +3 -3
- package/dist/{security-cli-JBJPJKU6.js → security-cli-Dz7uvFDt.js} +3 -3
- package/dist/{send-BqgaWpoE.js → send-BohOQw4n.js} +4 -4
- package/dist/{send-B-sa1Rzn.js → send-CqQ88clX.js} +18 -18
- package/dist/{send-DQ3s5E33.js → send-D2IXnEJl.js} +7 -7
- package/dist/{send-C1YtjPQb.js → send-D8eFKkkd.js} +5 -5
- package/dist/{send-Bhj3bXKi.js → send-Ps08x526.js} +5 -5
- package/dist/{server-DLj_G1sk.js → server-B2nRkZJD.js} +2 -2
- package/dist/{server-DTznnzCB.js → server-DYUU_xzp.js} +2 -2
- package/dist/{server-cron-B_5Pv8wt.js → server-cron-BgVg0Xr0.js} +2 -2
- package/dist/{server-cron-9NKGTvdH.js → server-cron-DiMWX26M.js} +2 -2
- package/dist/{server-node-events-HUAm9HRK.js → server-node-events-BTIgBj-Y.js} +3 -3
- package/dist/{server-node-events-BQbTcvb4.js → server-node-events-CD7PjM02.js} +3 -3
- package/dist/{session-CYgXtJQQ.js → session-Cz9lOeBe.js} +5 -5
- package/dist/{skill-commands-HOHDwVYx.js → skill-commands-LW0SeGsB.js} +24 -24
- package/dist/{status-C5BT3ShE.js → status-C1h5Ta_q.js} +4 -4
- package/dist/{status-BgIeE_GN.js → status-CnhP8fx7.js} +4 -4
- package/dist/{status-CCDLtWaH.js → status-DkMo6n1P.js} +1 -1
- package/dist/{status-CRSeqOJk.js → status-aMuRqtjs.js} +1 -1
- package/dist/{tables-BQMYTcw_.js → tables-CjmIs23-.js} +1 -1
- package/dist/{target-errors-iZTI1Fwr.js → target-errors-C3MQ1_UT.js} +2 -2
- package/dist/{tool-loop-detection-CqQip5ev.js → tool-loop-detection-CSfX9pJE.js} +2 -2
- package/dist/{tui-BUcLlnJf.js → tui-BuCSCKXc.js} +1 -1
- package/dist/{tui-CpFLYQvY.js → tui-DM671Mke.js} +1 -1
- package/dist/{tui-cli-CBpiAWOs.js → tui-cli-Cfw5R0S8.js} +3 -3
- package/dist/{tui-cli-BVCujDMk.js → tui-cli-DjI4QOzV.js} +3 -3
- package/dist/{update-cli-Bm9PtTTq.js → update-cli-BL1PUycr.js} +15 -15
- package/dist/{update-cli-Cg1NsSYC.js → update-cli-Bl5opT2O.js} +14 -14
- package/dist/{update-runner-giHs-roY.js → update-runner-BNiDZKyO.js} +38 -4
- package/dist/{update-runner-E5f53ziH.js → update-runner-Col2sOeF.js} +38 -4
- package/dist/{web-z6nfuAFN.js → web-0I3YFoDZ.js} +1 -1
- package/dist/{web-DHzdcD5k.js → web-Blq5sWxH.js} +35 -35
- package/dist/{web-fv_H8Fvb.js → web-C7I6HVNX.js} +2 -2
- package/dist/{web-D6QmuJSZ.js → web-D-gMdQkD.js} +3 -3
- package/dist/{web-C-SCrRnf.js → web-_igiL4AE.js} +3 -3
- package/dist/{web-search-providers.runtime-C-08aAIL.js → web-search-providers.runtime-CzUamtQl.js} +1 -1
- package/dist/{web-search-providers.runtime-BWcxW5PE.js → web-search-providers.runtime-pv7Jv2d6.js} +1 -1
- package/dist/{whatsapp-actions-CrVrn3wF.js → whatsapp-actions-oa93ddRw.js} +12 -12
- 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/src/brand.ts +1 -1
- package/src/canvas-host/a2ui/.bundle.hash +1 -1
- package/src/cli/daemon-cli/lifecycle.ts +23 -0
- package/src/cli/daemon-cli/restart-health.ts +37 -1
- package/src/cli/daemon-cli/status.gather.ts +37 -3
- package/src/cli/update-cli/progress.ts +2 -2
- package/src/cli/update-cli/update-command.ts +4 -3
- package/src/infra/update-global.ts +47 -0
- package/src/infra/update-runner.ts +10 -2
- package/dist/pi-model-discovery-runtime-DD55ZBCk.js +0 -5
package/package.json
CHANGED
package/src/brand.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const FASED_BRAND_NAME = "Fased";
|
|
2
2
|
export const FASED_AGENT_NAME = "Fased Agent";
|
|
3
3
|
export const FASED_CONTROL_NAME = "Fased Control";
|
|
4
|
-
export const FASED_PRODUCT_VERSION = "0.1.
|
|
4
|
+
export const FASED_PRODUCT_VERSION = "0.1.31";
|
|
5
5
|
export const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
|
|
6
6
|
|
|
7
7
|
export function formatFasedDisplayLine(): string {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
24e7a81f8ec190d5c9f255805c2c41d611c27cfe776316cef88d5e3019985050
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { loadConfig, resolveGatewayPort } from "../../config/config.js";
|
|
2
2
|
import { resolveGatewayService } from "../../daemon/service.js";
|
|
3
|
+
import { resolveGatewayCredentialsFromConfig } from "../../gateway/credentials.js";
|
|
4
|
+
import { loadGatewayTlsRuntime } from "../../infra/tls/gateway.js";
|
|
3
5
|
import { defaultRuntime } from "../../runtime.js";
|
|
4
6
|
import { theme } from "../../terminal/theme.js";
|
|
5
7
|
import { formatCliCommand } from "../command-format.js";
|
|
@@ -35,6 +37,25 @@ async function resolveGatewayRestartPort() {
|
|
|
35
37
|
return portFromArgs ?? resolveGatewayPort(loadConfig(), mergedEnv);
|
|
36
38
|
}
|
|
37
39
|
|
|
40
|
+
async function resolveGatewayRestartRpc(port: number) {
|
|
41
|
+
const cfg = loadConfig();
|
|
42
|
+
const tlsRuntime =
|
|
43
|
+
cfg.gateway?.tls?.enabled === true ? await loadGatewayTlsRuntime(cfg.gateway.tls) : undefined;
|
|
44
|
+
const scheme = tlsRuntime?.enabled ? "wss" : "ws";
|
|
45
|
+
const auth = resolveGatewayCredentialsFromConfig({
|
|
46
|
+
cfg,
|
|
47
|
+
env: process.env,
|
|
48
|
+
modeOverride: "local",
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
url: `${scheme}://127.0.0.1:${port}`,
|
|
52
|
+
token: auth.token,
|
|
53
|
+
password: auth.password,
|
|
54
|
+
tlsFingerprint: tlsRuntime?.enabled ? tlsRuntime.fingerprintSha256 : undefined,
|
|
55
|
+
timeoutMs: 1_500,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
38
59
|
export async function runDaemonUninstall(opts: DaemonLifecycleOptions = {}) {
|
|
39
60
|
return await runServiceUninstall({
|
|
40
61
|
serviceNoun: "Gateway",
|
|
@@ -88,6 +109,7 @@ export async function runDaemonRestart(opts: DaemonLifecycleOptions = {}): Promi
|
|
|
88
109
|
port: restartPort,
|
|
89
110
|
attempts: POST_RESTART_HEALTH_ATTEMPTS,
|
|
90
111
|
delayMs: POST_RESTART_HEALTH_DELAY_MS,
|
|
112
|
+
rpc: await resolveGatewayRestartRpc(restartPort),
|
|
91
113
|
});
|
|
92
114
|
|
|
93
115
|
if (!health.healthy && health.staleGatewayPids.length > 0) {
|
|
@@ -105,6 +127,7 @@ export async function runDaemonRestart(opts: DaemonLifecycleOptions = {}): Promi
|
|
|
105
127
|
port: restartPort,
|
|
106
128
|
attempts: POST_RESTART_HEALTH_ATTEMPTS,
|
|
107
129
|
delayMs: POST_RESTART_HEALTH_DELAY_MS,
|
|
130
|
+
rpc: await resolveGatewayRestartRpc(restartPort),
|
|
108
131
|
});
|
|
109
132
|
}
|
|
110
133
|
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
type PortUsage,
|
|
8
8
|
} from "../../infra/ports.js";
|
|
9
9
|
import { sleep } from "../../utils.js";
|
|
10
|
+
import { probeGatewayStatus } from "./probe.js";
|
|
10
11
|
|
|
11
12
|
export const DEFAULT_RESTART_HEALTH_TIMEOUT_MS = 60_000;
|
|
12
13
|
export const DEFAULT_RESTART_HEALTH_DELAY_MS = 500;
|
|
@@ -18,6 +19,10 @@ export type GatewayRestartSnapshot = {
|
|
|
18
19
|
runtime: GatewayServiceRuntime;
|
|
19
20
|
portUsage: PortUsage;
|
|
20
21
|
healthy: boolean;
|
|
22
|
+
rpc?: {
|
|
23
|
+
ok: boolean;
|
|
24
|
+
error?: string;
|
|
25
|
+
};
|
|
21
26
|
staleGatewayPids: number[];
|
|
22
27
|
};
|
|
23
28
|
|
|
@@ -32,6 +37,13 @@ export async function inspectGatewayRestart(params: {
|
|
|
32
37
|
service: GatewayService;
|
|
33
38
|
port: number;
|
|
34
39
|
env?: NodeJS.ProcessEnv;
|
|
40
|
+
rpc?: {
|
|
41
|
+
url: string;
|
|
42
|
+
token?: string;
|
|
43
|
+
password?: string;
|
|
44
|
+
tlsFingerprint?: string;
|
|
45
|
+
timeoutMs: number;
|
|
46
|
+
};
|
|
35
47
|
}): Promise<GatewayRestartSnapshot> {
|
|
36
48
|
const env = params.env ?? process.env;
|
|
37
49
|
let runtime: GatewayServiceRuntime = { status: "unknown" };
|
|
@@ -67,7 +79,18 @@ export async function inspectGatewayRestart(params: {
|
|
|
67
79
|
? portUsage.listeners.some((listener) => listenerOwnedByRuntimePid({ listener, runtimePid }))
|
|
68
80
|
: gatewayListeners.length > 0 ||
|
|
69
81
|
(portUsage.status === "busy" && portUsage.listeners.length === 0);
|
|
70
|
-
const
|
|
82
|
+
const shouldProbeRpc = running && ownsPort && params.rpc;
|
|
83
|
+
const rpc = shouldProbeRpc
|
|
84
|
+
? await probeGatewayStatus({
|
|
85
|
+
url: params.rpc.url,
|
|
86
|
+
token: params.rpc.token,
|
|
87
|
+
password: params.rpc.password,
|
|
88
|
+
tlsFingerprint: params.rpc.tlsFingerprint,
|
|
89
|
+
timeoutMs: params.rpc.timeoutMs,
|
|
90
|
+
json: true,
|
|
91
|
+
})
|
|
92
|
+
: undefined;
|
|
93
|
+
const healthy = running && ownsPort && (rpc ? rpc.ok : true);
|
|
71
94
|
const staleGatewayPids = Array.from(
|
|
72
95
|
new Set(
|
|
73
96
|
gatewayListeners
|
|
@@ -89,6 +112,7 @@ export async function inspectGatewayRestart(params: {
|
|
|
89
112
|
runtime,
|
|
90
113
|
portUsage,
|
|
91
114
|
healthy,
|
|
115
|
+
...(rpc ? { rpc } : {}),
|
|
92
116
|
staleGatewayPids,
|
|
93
117
|
};
|
|
94
118
|
}
|
|
@@ -99,6 +123,13 @@ export async function waitForGatewayHealthyRestart(params: {
|
|
|
99
123
|
attempts?: number;
|
|
100
124
|
delayMs?: number;
|
|
101
125
|
env?: NodeJS.ProcessEnv;
|
|
126
|
+
rpc?: {
|
|
127
|
+
url: string;
|
|
128
|
+
token?: string;
|
|
129
|
+
password?: string;
|
|
130
|
+
tlsFingerprint?: string;
|
|
131
|
+
timeoutMs: number;
|
|
132
|
+
};
|
|
102
133
|
}): Promise<GatewayRestartSnapshot> {
|
|
103
134
|
const attempts = params.attempts ?? DEFAULT_RESTART_HEALTH_ATTEMPTS;
|
|
104
135
|
const delayMs = params.delayMs ?? DEFAULT_RESTART_HEALTH_DELAY_MS;
|
|
@@ -107,6 +138,7 @@ export async function waitForGatewayHealthyRestart(params: {
|
|
|
107
138
|
service: params.service,
|
|
108
139
|
port: params.port,
|
|
109
140
|
env: params.env,
|
|
141
|
+
rpc: params.rpc,
|
|
110
142
|
});
|
|
111
143
|
|
|
112
144
|
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
@@ -121,6 +153,7 @@ export async function waitForGatewayHealthyRestart(params: {
|
|
|
121
153
|
service: params.service,
|
|
122
154
|
port: params.port,
|
|
123
155
|
env: params.env,
|
|
156
|
+
rpc: params.rpc,
|
|
124
157
|
});
|
|
125
158
|
}
|
|
126
159
|
|
|
@@ -151,6 +184,9 @@ export function renderRestartDiagnostics(snapshot: GatewayRestartSnapshot): stri
|
|
|
151
184
|
if (snapshot.portUsage.errors?.length) {
|
|
152
185
|
lines.push(`Port diagnostics errors: ${snapshot.portUsage.errors.join("; ")}`);
|
|
153
186
|
}
|
|
187
|
+
if (snapshot.rpc && !snapshot.rpc.ok) {
|
|
188
|
+
lines.push(`Gateway RPC probe: failed${snapshot.rpc.error ? ` (${snapshot.rpc.error})` : ""}.`);
|
|
189
|
+
}
|
|
154
190
|
|
|
155
191
|
return lines;
|
|
156
192
|
}
|
|
@@ -13,6 +13,7 @@ import { auditGatewayServiceConfig } from "../../daemon/service-audit.js";
|
|
|
13
13
|
import { resolveGatewayService } from "../../daemon/service.js";
|
|
14
14
|
import { resolveGatewayBindHost } from "../../gateway/net.js";
|
|
15
15
|
import {
|
|
16
|
+
classifyPortListener,
|
|
16
17
|
formatPortDiagnostics,
|
|
17
18
|
inspectPortUsage,
|
|
18
19
|
type PortListener,
|
|
@@ -96,16 +97,49 @@ export type DaemonStatus = {
|
|
|
96
97
|
extraServices: Array<{ label: string; detail: string; scope: string }>;
|
|
97
98
|
};
|
|
98
99
|
|
|
99
|
-
function shouldReportPortUsage(
|
|
100
|
-
|
|
100
|
+
function shouldReportPortUsage(
|
|
101
|
+
port: DaemonStatus["port"] | undefined,
|
|
102
|
+
rpcOk?: boolean,
|
|
103
|
+
runtime?: DaemonStatus["service"]["runtime"],
|
|
104
|
+
) {
|
|
105
|
+
if (!port || port.status !== "busy") {
|
|
101
106
|
return false;
|
|
102
107
|
}
|
|
103
108
|
if (rpcOk === true) {
|
|
104
109
|
return false;
|
|
105
110
|
}
|
|
111
|
+
if (isExpectedSingleGatewayListener(port, runtime)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
106
114
|
return true;
|
|
107
115
|
}
|
|
108
116
|
|
|
117
|
+
function isExpectedSingleGatewayListener(
|
|
118
|
+
port: DaemonStatus["port"],
|
|
119
|
+
runtime?: DaemonStatus["service"]["runtime"],
|
|
120
|
+
): boolean {
|
|
121
|
+
if (!port || port.status !== "busy" || runtime?.status !== "running") {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
if (port.listeners.length === 0) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const gatewayListeners = port.listeners.filter(
|
|
128
|
+
(listener) => classifyPortListener(listener, port.port) === "gateway",
|
|
129
|
+
);
|
|
130
|
+
if (gatewayListeners.length !== port.listeners.length) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
const pids = Array.from(
|
|
134
|
+
new Set(
|
|
135
|
+
gatewayListeners
|
|
136
|
+
.map((listener) => listener.pid)
|
|
137
|
+
.filter((pid): pid is number => typeof pid === "number" && Number.isFinite(pid)),
|
|
138
|
+
),
|
|
139
|
+
);
|
|
140
|
+
return pids.length <= 1;
|
|
141
|
+
}
|
|
142
|
+
|
|
109
143
|
export async function gatherDaemonStatus(
|
|
110
144
|
opts: {
|
|
111
145
|
rpc: GatewayRpcOpts;
|
|
@@ -285,7 +319,7 @@ export async function gatherDaemonStatus(
|
|
|
285
319
|
}
|
|
286
320
|
|
|
287
321
|
export function renderPortDiagnosticsForCli(status: DaemonStatus, rpcOk?: boolean): string[] {
|
|
288
|
-
if (!status.port
|
|
322
|
+
if (!shouldReportPortUsage(status.port, rpcOk, status.service.runtime)) {
|
|
289
323
|
return [];
|
|
290
324
|
}
|
|
291
325
|
return formatPortDiagnostics({
|
|
@@ -59,7 +59,7 @@ export function inferUpdateFailureHints(result: UpdateRunResult): string[] {
|
|
|
59
59
|
hints.push(
|
|
60
60
|
"Detected permission failure (EACCES). Re-run with a writable global prefix or sudo (for system-managed Node installs).",
|
|
61
61
|
);
|
|
62
|
-
hints.push("Example: npm config set prefix ~/.local && npm i -g fased@latest");
|
|
62
|
+
hints.push("Example: npm config set prefix ~/.local && npm i -g @fased/fased@latest");
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
if (
|
|
@@ -71,7 +71,7 @@ export function inferUpdateFailureHints(result: UpdateRunResult): string[] {
|
|
|
71
71
|
hints.push(
|
|
72
72
|
"Detected native optional dependency build failure (e.g. opus). The updater retries with --omit=optional automatically.",
|
|
73
73
|
);
|
|
74
|
-
hints.push("If it still fails: npm i -g fased@latest --omit=optional");
|
|
74
|
+
hints.push("If it still fails: npm i -g @fased/fased@latest --omit=optional");
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
return hints;
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
cleanupGlobalRenameDirs,
|
|
28
28
|
globalInstallArgs,
|
|
29
29
|
resolveGlobalPackageRoot,
|
|
30
|
+
resolveNodeModulesRootForPackageRoot,
|
|
30
31
|
} from "../../infra/update-global.js";
|
|
31
32
|
import { runGatewayUpdate, type UpdateRunResult } from "../../infra/update-runner.js";
|
|
32
33
|
import { syncPluginsForUpdateChannel, updateNpmInstalledPlugins } from "../../plugins/update.js";
|
|
@@ -296,7 +297,7 @@ async function runPackageInstallUpdate(params: {
|
|
|
296
297
|
const beforeVersion = pkgRoot ? await readPackageVersion(pkgRoot) : null;
|
|
297
298
|
if (pkgRoot) {
|
|
298
299
|
await cleanupGlobalRenameDirs({
|
|
299
|
-
globalRoot:
|
|
300
|
+
globalRoot: resolveNodeModulesRootForPackageRoot(pkgRoot),
|
|
300
301
|
packageName,
|
|
301
302
|
});
|
|
302
303
|
}
|
|
@@ -754,7 +755,7 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise<void> {
|
|
|
754
755
|
);
|
|
755
756
|
}
|
|
756
757
|
} else {
|
|
757
|
-
actions.push(`Run global package manager update with spec
|
|
758
|
+
actions.push(`Run global package manager update with spec ${DEFAULT_PACKAGE_NAME}@${tag}`);
|
|
758
759
|
}
|
|
759
760
|
actions.push("Run plugin update sync after core update");
|
|
760
761
|
actions.push("Refresh shell completion cache (if needed)");
|
|
@@ -914,7 +915,7 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise<void> {
|
|
|
914
915
|
);
|
|
915
916
|
defaultRuntime.log(
|
|
916
917
|
theme.muted(
|
|
917
|
-
`Examples: \`${replaceCliName("npm i -g fased@latest", CLI_NAME)}\` or \`${replaceCliName("pnpm add -g fased@latest", CLI_NAME)}\``,
|
|
918
|
+
`Examples: \`${replaceCliName("npm i -g @fased/fased@latest", CLI_NAME)}\` or \`${replaceCliName("pnpm add -g @fased/fased@latest", CLI_NAME)}\``,
|
|
918
919
|
),
|
|
919
920
|
);
|
|
920
921
|
}
|
|
@@ -5,6 +5,12 @@ import { pathExists } from "../utils.js";
|
|
|
5
5
|
|
|
6
6
|
export type GlobalInstallManager = "npm" | "pnpm" | "bun";
|
|
7
7
|
|
|
8
|
+
export type HostedNpmInstallTarget = {
|
|
9
|
+
manager: "npm";
|
|
10
|
+
globalRoot: string;
|
|
11
|
+
env: NodeJS.ProcessEnv;
|
|
12
|
+
};
|
|
13
|
+
|
|
8
14
|
export type CommandRunner = (
|
|
9
15
|
argv: string[],
|
|
10
16
|
options: { timeoutMs: number; cwd?: string; env?: NodeJS.ProcessEnv },
|
|
@@ -33,6 +39,42 @@ function resolveBunGlobalRoot(): string {
|
|
|
33
39
|
return path.join(bunInstall, "install", "global", "node_modules");
|
|
34
40
|
}
|
|
35
41
|
|
|
42
|
+
export function resolveNodeModulesRootForPackageRoot(pkgRoot: string): string {
|
|
43
|
+
const parent = path.dirname(pkgRoot);
|
|
44
|
+
if (path.basename(parent).startsWith("@")) {
|
|
45
|
+
return path.dirname(parent);
|
|
46
|
+
}
|
|
47
|
+
return parent;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function resolveHostedNpmInstallTarget(pkgRoot: string): HostedNpmInstallTarget | null {
|
|
51
|
+
const resolved = path.resolve(pkgRoot);
|
|
52
|
+
const prefixMarker = `${path.sep}.fased${path.sep}install-cache${path.sep}npm-global`;
|
|
53
|
+
const globalRootSuffix = `${path.sep}lib${path.sep}node_modules`;
|
|
54
|
+
const globalRootMarker = `${prefixMarker}${globalRootSuffix}`;
|
|
55
|
+
const markerIndex = resolved.indexOf(`${globalRootMarker}${path.sep}`);
|
|
56
|
+
if (markerIndex < 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const prefix = resolved.slice(0, markerIndex + prefixMarker.length);
|
|
61
|
+
const globalRoot = path.join(prefix, "lib", "node_modules");
|
|
62
|
+
const cache = path.join(path.dirname(prefix), "npm-cache");
|
|
63
|
+
const expectedRoot = resolveNodeModulesRootForPackageRoot(resolved);
|
|
64
|
+
if (path.resolve(expectedRoot) !== path.resolve(globalRoot)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
manager: "npm",
|
|
70
|
+
globalRoot,
|
|
71
|
+
env: {
|
|
72
|
+
npm_config_prefix: prefix,
|
|
73
|
+
npm_config_cache: cache,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
36
78
|
export async function resolveGlobalRoot(
|
|
37
79
|
manager: GlobalInstallManager,
|
|
38
80
|
runCommand: CommandRunner,
|
|
@@ -73,6 +115,11 @@ export async function detectGlobalInstallManagerForRoot(
|
|
|
73
115
|
pkgRoot: string,
|
|
74
116
|
timeoutMs: number,
|
|
75
117
|
): Promise<GlobalInstallManager | null> {
|
|
118
|
+
const hostedTarget = resolveHostedNpmInstallTarget(pkgRoot);
|
|
119
|
+
if (hostedTarget) {
|
|
120
|
+
return hostedTarget.manager;
|
|
121
|
+
}
|
|
122
|
+
|
|
76
123
|
const pkgReal = await tryRealpath(pkgRoot);
|
|
77
124
|
|
|
78
125
|
const candidates: Array<{
|
|
@@ -24,6 +24,8 @@ import {
|
|
|
24
24
|
detectGlobalInstallManagerForRoot,
|
|
25
25
|
globalInstallArgs,
|
|
26
26
|
globalInstallFallbackArgs,
|
|
27
|
+
resolveHostedNpmInstallTarget,
|
|
28
|
+
resolveNodeModulesRootForPackageRoot,
|
|
27
29
|
} from "./update-global.js";
|
|
28
30
|
|
|
29
31
|
export type UpdateStepResult = {
|
|
@@ -893,11 +895,15 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
|
|
|
893
895
|
}
|
|
894
896
|
|
|
895
897
|
const beforeVersion = await readPackageVersion(pkgRoot);
|
|
896
|
-
const
|
|
898
|
+
const hostedTarget = resolveHostedNpmInstallTarget(pkgRoot);
|
|
899
|
+
const globalManager =
|
|
900
|
+
hostedTarget?.manager ??
|
|
901
|
+
(await detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs));
|
|
897
902
|
if (globalManager) {
|
|
898
903
|
const packageName = (await readPackageName(pkgRoot)) ?? DEFAULT_PACKAGE_NAME;
|
|
904
|
+
const globalEnv = hostedTarget?.env ? { ...process.env, ...hostedTarget.env } : undefined;
|
|
899
905
|
await cleanupGlobalRenameDirs({
|
|
900
|
-
globalRoot:
|
|
906
|
+
globalRoot: hostedTarget?.globalRoot ?? resolveNodeModulesRootForPackageRoot(pkgRoot),
|
|
901
907
|
packageName,
|
|
902
908
|
});
|
|
903
909
|
const channel = opts.channel ?? DEFAULT_PACKAGE_CHANNEL;
|
|
@@ -910,6 +916,7 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
|
|
|
910
916
|
argv: globalInstallArgs(globalManager, spec),
|
|
911
917
|
cwd: pkgRoot,
|
|
912
918
|
timeoutMs,
|
|
919
|
+
env: globalEnv,
|
|
913
920
|
progress,
|
|
914
921
|
stepIndex: 0,
|
|
915
922
|
totalSteps: 1,
|
|
@@ -926,6 +933,7 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
|
|
|
926
933
|
argv: fallbackArgv,
|
|
927
934
|
cwd: pkgRoot,
|
|
928
935
|
timeoutMs,
|
|
936
|
+
env: globalEnv,
|
|
929
937
|
progress,
|
|
930
938
|
stepIndex: 0,
|
|
931
939
|
totalSteps: 1,
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import "./agent-scope-BYecP9O5.js";
|
|
2
|
-
import "./github-copilot-token-eyrRGmGp.js";
|
|
3
|
-
import { i as discoverModels, n as PiModelRegistryClass, r as discoverAuthStorage, t as PiAuthStorageClass } from "./pi-model-discovery--TE7j7VE.js";
|
|
4
|
-
|
|
5
|
-
export { discoverAuthStorage, discoverModels };
|