zidane 7.2.5 → 8.0.4
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/LICENSE +21 -0
- package/README.md +34 -6
- package/dist/{acp-D-tVyUjw.js → acp-DQDhi2dj.js} +230 -77
- package/dist/acp-DQDhi2dj.js.map +1 -0
- package/dist/acp-cli.d.ts +1 -1
- package/dist/acp-cli.js +9 -66
- package/dist/acp-cli.js.map +1 -1
- package/dist/acp.d.ts +10 -590
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +3 -3
- package/dist/{agent-D0zZnGbt.js → agent-DSLNmBp0.js} +14401 -13214
- package/dist/agent-DSLNmBp0.js.map +1 -0
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +3 -2
- package/dist/aliasing-lVFbm81n.js +217 -0
- package/dist/aliasing-lVFbm81n.js.map +1 -0
- package/dist/{anthropic-C2aole0G.js → anthropic-CD00LhUP.js} +1442 -1264
- package/dist/anthropic-CD00LhUP.js.map +1 -0
- package/dist/artifacts-CV2hUKnL.js.map +1 -1
- package/dist/{atomic-write-B7zr1ddF.js → atomic-write-Ijgf2Mhc.js} +13 -3
- package/dist/atomic-write-Ijgf2Mhc.js.map +1 -0
- package/dist/call-tool-dHlbGOIY.js +70 -0
- package/dist/call-tool-dHlbGOIY.js.map +1 -0
- package/dist/chat/pure.d.ts +372 -6
- package/dist/chat/pure.d.ts.map +1 -1
- package/dist/chat/pure.js +35 -244
- package/dist/chat/pure.js.map +1 -1
- package/dist/{approvals-DKaJZYlm.js → chat-JPJJ8uu5.js} +15879 -14631
- package/dist/chat-JPJJ8uu5.js.map +1 -0
- package/dist/chat.d.ts +4 -6
- package/dist/chat.js +23 -12
- package/dist/cli-shared-C-YCaglL.js +159 -0
- package/dist/cli-shared-C-YCaglL.js.map +1 -0
- package/dist/client-core-BQSyDALT.d.ts +2115 -0
- package/dist/client-core-BQSyDALT.d.ts.map +1 -0
- package/dist/codemode-worker.d.ts +1 -0
- package/dist/codemode-worker.js +155 -0
- package/dist/codemode-worker.js.map +1 -0
- package/dist/codemode.d.ts +352 -0
- package/dist/codemode.d.ts.map +1 -0
- package/dist/codemode.js +5 -0
- package/dist/connection-Dr-Js4yZ.d.ts +28 -0
- package/dist/connection-Dr-Js4yZ.d.ts.map +1 -0
- package/dist/connection-loop-gdh22LTI.js +112 -0
- package/dist/connection-loop-gdh22LTI.js.map +1 -0
- package/dist/context-segments-BHKlagL6.js +1016 -0
- package/dist/context-segments-BHKlagL6.js.map +1 -0
- package/dist/{context-transport-T_6AYIvy.js → context-transport-DSMTUsK1.js} +3 -3
- package/dist/{context-transport-T_6AYIvy.js.map → context-transport-DSMTUsK1.js.map} +1 -1
- package/dist/contexts/daytona.d.ts +19 -8
- package/dist/contexts/daytona.d.ts.map +1 -1
- package/dist/contexts/daytona.js +1 -440
- package/dist/contexts/docker.d.ts +36 -7
- package/dist/contexts/docker.d.ts.map +1 -1
- package/dist/contexts/docker.js +1 -456
- package/dist/contexts/e2b.d.ts +68 -13
- package/dist/contexts/e2b.d.ts.map +1 -1
- package/dist/contexts/e2b.js +1 -382
- package/dist/contexts/sandbox.d.ts +1 -1
- package/dist/contexts/sandbox.js +5 -0
- package/dist/contexts/sandbox.js.map +1 -1
- package/dist/{contexts-CRE9pw07.js → contexts-d7UolYot.js} +1059 -524
- package/dist/contexts-d7UolYot.js.map +1 -0
- package/dist/contexts.d.ts +3 -3
- package/dist/contexts.js +1 -1
- package/dist/cred-keys-GpBg71cP.js +105 -0
- package/dist/cred-keys-GpBg71cP.js.map +1 -0
- package/dist/{auth-BG2rVKSt.js → credentials-JttEuRON.js} +55 -206
- package/dist/credentials-JttEuRON.js.map +1 -0
- package/dist/{cursor-iojRXHF9.js → cursor-CdjaQTBW.js} +3 -3
- package/dist/{cursor-iojRXHF9.js.map → cursor-CdjaQTBW.js.map} +1 -1
- package/dist/daemon-cli.d.ts +1 -1
- package/dist/daemon-cli.js +3 -2
- package/dist/daemon-cli.js.map +1 -1
- package/dist/daytona-DG3omipZ.js +513 -0
- package/dist/daytona-DG3omipZ.js.map +1 -0
- package/dist/defaults-Cx3zvDOV.js +23 -0
- package/dist/defaults-Cx3zvDOV.js.map +1 -0
- package/dist/dispatcher-BMlu2BmZ.js +4941 -0
- package/dist/dispatcher-BMlu2BmZ.js.map +1 -0
- package/dist/docker-BZhMMJUp.js +727 -0
- package/dist/docker-BZhMMJUp.js.map +1 -0
- package/dist/e2b-CEVOdRib.js +480 -0
- package/dist/e2b-CEVOdRib.js.map +1 -0
- package/dist/edit-utils-EGosADZq.js +234 -0
- package/dist/edit-utils-EGosADZq.js.map +1 -0
- package/dist/environment-8wsKE2Ln.js +214 -0
- package/dist/environment-8wsKE2Ln.js.map +1 -0
- package/dist/eval-BNcvle_J.js +1595 -0
- package/dist/eval-BNcvle_J.js.map +1 -0
- package/dist/eval.d.ts +2 -2
- package/dist/eval.js +1 -1489
- package/dist/executor-Cx5-8yqi.js +621 -0
- package/dist/executor-Cx5-8yqi.js.map +1 -0
- package/dist/extension-authoring-DyGGmq9V.js +385 -0
- package/dist/extension-authoring-DyGGmq9V.js.map +1 -0
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.js +3 -3
- package/dist/{fetch-url-DX75gpL0.js → fetch-url-Ct2TjDWt.js} +4 -4
- package/dist/{fetch-url-DX75gpL0.js.map → fetch-url-Ct2TjDWt.js.map} +1 -1
- package/dist/{format-BF745pLL.js → format-C2NQEVUH.js} +39 -2
- package/dist/format-C2NQEVUH.js.map +1 -0
- package/dist/format-bytes-C7tfc3Zm.js +55 -0
- package/dist/format-bytes-C7tfc3Zm.js.map +1 -0
- package/dist/headless-C_rNUuYC.js +960 -0
- package/dist/headless-C_rNUuYC.js.map +1 -0
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -413
- package/dist/{history-search-C4bk1Wz_.js → history-search-CcYzF8-0.js} +7 -3
- package/dist/history-search-CcYzF8-0.js.map +1 -0
- package/dist/history-search-worker.d.ts +1 -1
- package/dist/history-search-worker.js +1 -1
- package/dist/host-D7NrI03V.js +378 -0
- package/dist/host-D7NrI03V.js.map +1 -0
- package/dist/host-signals-BcP5QKUD.js +118 -0
- package/dist/host-signals-BcP5QKUD.js.map +1 -0
- package/dist/identity-CwfO8K-t.js +26 -0
- package/dist/identity-CwfO8K-t.js.map +1 -0
- package/dist/{index-BgN1T3lk.d.ts → index-BGe1fQT7.d.ts} +10987 -9320
- package/dist/index-BGe1fQT7.d.ts.map +1 -0
- package/dist/index-BVQsIKGn.d.ts +448 -0
- package/dist/index-BVQsIKGn.d.ts.map +1 -0
- package/dist/{index-C6NEd5y_.d.ts → index-CHABJd-L.d.ts} +3386 -502
- package/dist/index-CHABJd-L.d.ts.map +1 -0
- package/dist/{index-C37_ppWv.d.ts → index-D6a7qXpg.d.ts} +2 -3
- package/dist/index-D6a7qXpg.d.ts.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +27 -23
- package/dist/{completion-core-BRo86R_L.js → inline-ghost-BVRQeGoL.js} +50 -2
- package/dist/inline-ghost-BVRQeGoL.js.map +1 -0
- package/dist/ipc/remote.d.ts +313 -0
- package/dist/ipc/remote.d.ts.map +1 -0
- package/dist/ipc/remote.js +4 -0
- package/dist/ipc.d.ts +6 -964
- package/dist/ipc.js +403 -4
- package/dist/ipc.js.map +1 -0
- package/dist/{isolation-Kfoof0MM.d.ts → isolation-D9L650W5.d.ts} +100 -15
- package/dist/isolation-D9L650W5.d.ts.map +1 -0
- package/dist/json-rpc--HXQti1E.js +350 -0
- package/dist/json-rpc--HXQti1E.js.map +1 -0
- package/dist/links-j8rED1sR.js +603 -0
- package/dist/links-j8rED1sR.js.map +1 -0
- package/dist/local-terminal-D8QThwo_.js +252 -0
- package/dist/local-terminal-D8QThwo_.js.map +1 -0
- package/dist/{logger--C1VQjwJ.js → logger-Gtqlayx8.js} +199 -173
- package/dist/logger-Gtqlayx8.js.map +1 -0
- package/dist/logs-view-CWG8aUAG.js.map +1 -1
- package/dist/{mcp-CgNd-f3F.js → mcp-_wecH9Qe.js} +608 -562
- package/dist/mcp-_wecH9Qe.js.map +1 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +2 -2
- package/dist/media-sniff-UKijEaiQ.js.map +1 -1
- package/dist/{messages-2jcOA_5R.js → messages-BqiwcD2Q.js} +1017 -1014
- package/dist/messages-BqiwcD2Q.js.map +1 -0
- package/dist/{oauth-DxHO17JE.js → oauth-Px_pBB9W.js} +5 -5
- package/dist/{oauth-DxHO17JE.js.map → oauth-Px_pBB9W.js.map} +1 -1
- package/dist/{openai-compat-Dy56weK8.js → openai-compat-CFrpH7uq.js} +432 -589
- package/dist/openai-compat-CFrpH7uq.js.map +1 -0
- package/dist/orchestration-BCGmB8Ps.js +511 -0
- package/dist/orchestration-BCGmB8Ps.js.map +1 -0
- package/dist/output/stream-json.d.ts +1 -2
- package/dist/output/stream-json.d.ts.map +1 -1
- package/dist/output/stream-json.js +1 -1
- package/dist/output/terminal.d.ts +1 -2
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +13 -7
- package/dist/output/terminal.js.map +1 -1
- package/dist/{plugins-gbI7SBA6.js → plugins-DS7mahzZ.js} +20 -101
- package/dist/plugins-DS7mahzZ.js.map +1 -0
- package/dist/plugins.d.ts +1 -1
- package/dist/plugins.js +1 -2
- package/dist/prelude-Cxo4t74B.js +517 -0
- package/dist/prelude-Cxo4t74B.js.map +1 -0
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -2
- package/dist/project-root-B8zADr4o.js +167 -0
- package/dist/project-root-B8zADr4o.js.map +1 -0
- package/dist/project-user-paths-BSgtrRxl.js +58 -0
- package/dist/project-user-paths-BSgtrRxl.js.map +1 -0
- package/dist/{prompts-Pqc3JdW_.d.ts → prompts-DYcvqShf.d.ts} +14 -11
- package/dist/prompts-DYcvqShf.d.ts.map +1 -0
- package/dist/protocol-DnhqqSmE.js +13 -0
- package/dist/protocol-DnhqqSmE.js.map +1 -0
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/anthropic.js +1 -2
- package/dist/providers/arcee.d.ts +1 -1
- package/dist/providers/arcee.js +1 -1
- package/dist/providers/baseten.d.ts +1 -1
- package/dist/providers/baseten.js +1 -1
- package/dist/providers/cerebras.d.ts +1 -1
- package/dist/providers/cerebras.js +3 -2
- package/dist/providers/cerebras.js.map +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/local.js +1 -1
- package/dist/providers/openai-compat.d.ts +1 -1
- package/dist/providers/openai-compat.js +1 -2
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +15 -12
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +3 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.js +3 -3
- package/dist/{providers-BVhnFyiY.js → providers-XUR7F4Hi.js} +4 -4
- package/dist/{providers-BVhnFyiY.js.map → providers-XUR7F4Hi.js.map} +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +4 -4
- package/dist/registry-D6ShBWJU.js +5234 -0
- package/dist/registry-D6ShBWJU.js.map +1 -0
- package/dist/remote-hosts-BtA_9ZGp.js +97 -0
- package/dist/remote-hosts-BtA_9ZGp.js.map +1 -0
- package/dist/restate.d.ts +2 -3
- package/dist/restate.d.ts.map +1 -1
- package/dist/restate.js +631 -572
- package/dist/restate.js.map +1 -1
- package/dist/run-summary-CklLiZ4y.js +288 -0
- package/dist/run-summary-CklLiZ4y.js.map +1 -0
- package/dist/{sandbox-BH0WQkXn.d.ts → sandbox-C5dR5DwQ.d.ts} +6 -3
- package/dist/sandbox-C5dR5DwQ.d.ts.map +1 -0
- package/dist/session/sqlite.d.ts +1 -2
- package/dist/session/sqlite.d.ts.map +1 -1
- package/dist/session/sqlite.js +1 -616
- package/dist/session-factory-BUGY5P40.js +1576 -0
- package/dist/session-factory-BUGY5P40.js.map +1 -0
- package/dist/{session-BqRP1hS7.js → session-xh9JXu6i.js} +94 -52
- package/dist/session-xh9JXu6i.js.map +1 -0
- package/dist/session.d.ts +1 -1
- package/dist/session.js +2 -2
- package/dist/settings-keys-Ckf29NeM.js +677 -0
- package/dist/settings-keys-Ckf29NeM.js.map +1 -0
- package/dist/shell-path-Dqaoow2J.js +412 -0
- package/dist/shell-path-Dqaoow2J.js.map +1 -0
- package/dist/{skills-BC3dodWp.js → skills-DKqZJm4X.js} +430 -470
- package/dist/skills-DKqZJm4X.js.map +1 -0
- package/dist/skills.d.ts +2 -2
- package/dist/skills.js +1 -2
- package/dist/source-mPExaUm8.js +381 -0
- package/dist/source-mPExaUm8.js.map +1 -0
- package/dist/sqlite-DV1DQzN2.js +698 -0
- package/dist/sqlite-DV1DQzN2.js.map +1 -0
- package/dist/{src-CkNQKFKr.js → src-BRMYRJib.js} +903 -1121
- package/dist/src-BRMYRJib.js.map +1 -0
- package/dist/{stdio-DPpBDPx5.js → stdio-C6YyoW3I.js} +4 -4
- package/dist/{stdio-DPpBDPx5.js.map → stdio-C6YyoW3I.js.map} +1 -1
- package/dist/{stdio-loader-Bbx19dMZ.js → stdio-loader-C830Vg-Z.js} +4 -4
- package/dist/{stdio-loader-Bbx19dMZ.js.map → stdio-loader-C830Vg-Z.js.map} +1 -1
- package/dist/system-prompt-MNVHatSD.d.ts.map +1 -1
- package/dist/timeout-DEaqslLO.d.ts.map +1 -1
- package/dist/todo-edits-Dn251YUP.js +1790 -0
- package/dist/todo-edits-Dn251YUP.js.map +1 -0
- package/dist/{turn-operations-DrbJlpq9.js → tool-formatters-IQFDrdrs.js} +1456 -2120
- package/dist/tool-formatters-IQFDrdrs.js.map +1 -0
- package/dist/tool-state-Dku6YqAB.js +989 -0
- package/dist/tool-state-Dku6YqAB.js.map +1 -0
- package/dist/tools/fetch-url.d.ts +1 -2
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +1 -2
- package/dist/tools/prompts.d.ts +1 -1
- package/dist/tools/prompts.js +7 -7
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/web-search.d.ts +1 -2
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +2 -2
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools-_DnT3AGM.js +578 -0
- package/dist/tools-_DnT3AGM.js.map +1 -0
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +4 -2
- package/dist/tui.d.ts +534 -517
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +34933 -27243
- package/dist/tui.js.map +1 -1
- package/dist/turn-operations-B8sokwi5.js +333 -0
- package/dist/turn-operations-B8sokwi5.js.map +1 -0
- package/dist/turn-operations-DQX5ZZni.d.ts +3089 -0
- package/dist/turn-operations-DQX5ZZni.d.ts.map +1 -0
- package/dist/types-C7ZFOztE.d.ts +132 -0
- package/dist/types-C7ZFOztE.d.ts.map +1 -0
- package/dist/types-CH5XpIHw.js +114 -0
- package/dist/types-CH5XpIHw.js.map +1 -0
- package/dist/{types-CWgENVLY.js → types-Cu0ZGDu9.js} +10 -6
- package/dist/types-Cu0ZGDu9.js.map +1 -0
- package/dist/types-IqegbJEE.d.ts +624 -0
- package/dist/types-IqegbJEE.d.ts.map +1 -0
- package/dist/types.d.ts +4 -4
- package/dist/types.js +1 -1
- package/dist/url-D8HCl65b.js +1259 -0
- package/dist/url-D8HCl65b.js.map +1 -0
- package/dist/wasm-BVT-j5cl.js +33 -0
- package/dist/wasm-BVT-j5cl.js.map +1 -0
- package/dist/workspace-exec-stream-SV2R9d5S.js +355 -0
- package/dist/workspace-exec-stream-SV2R9d5S.js.map +1 -0
- package/dist/ws-CIHMvlSh.js +952 -0
- package/dist/ws-CIHMvlSh.js.map +1 -0
- package/dist/ws-client-N7NxzvQp.js +230 -0
- package/dist/ws-client-N7NxzvQp.js.map +1 -0
- package/dist/{xai-CazjStOK.js → xai-CvJTeLrI.js} +165 -5
- package/dist/xai-CvJTeLrI.js.map +1 -0
- package/dist/xdg-zweed0-t.js +117 -0
- package/dist/xdg-zweed0-t.js.map +1 -0
- package/docs/ACP.md +52 -0
- package/docs/ARCHITECTURE.md +103 -6
- package/docs/ARTIFACTS.md +8 -4
- package/docs/CHAT.md +165 -14
- package/docs/EXECUTION_CONTEXT.md +8 -0
- package/docs/EXTENSIONS.md +123 -2
- package/docs/HEADLESS.md +2 -0
- package/docs/IPC.md +775 -64
- package/docs/MACHINES.md +456 -0
- package/docs/PANELS.md +3 -0
- package/docs/README.md +4 -0
- package/docs/RESTATE.md +3 -2
- package/docs/RUN_IN_BACKGROUND.md +10 -2
- package/docs/SERVER.md +1085 -0
- package/docs/SKILL.md +6 -1
- package/docs/TERMINAL.md +75 -0
- package/docs/TUI.md +65 -14
- package/package.json +58 -26
- package/scripts/eval.ts +4 -0
- package/dist/acp-D-tVyUjw.js.map +0 -1
- package/dist/agent-D0zZnGbt.js.map +0 -1
- package/dist/anthropic-C2aole0G.js.map +0 -1
- package/dist/approvals-DKaJZYlm.js.map +0 -1
- package/dist/atomic-write-B7zr1ddF.js.map +0 -1
- package/dist/auth-BG2rVKSt.js.map +0 -1
- package/dist/completion-core-BRo86R_L.js.map +0 -1
- package/dist/contexts/daytona.js.map +0 -1
- package/dist/contexts/docker.js.map +0 -1
- package/dist/contexts/e2b.js.map +0 -1
- package/dist/contexts-CRE9pw07.js.map +0 -1
- package/dist/eval.js.map +0 -1
- package/dist/format-BF745pLL.js.map +0 -1
- package/dist/glob-DluQFSw1.js +0 -270
- package/dist/glob-DluQFSw1.js.map +0 -1
- package/dist/headless.js.map +0 -1
- package/dist/history-search-C4bk1Wz_.js.map +0 -1
- package/dist/index-BgN1T3lk.d.ts.map +0 -1
- package/dist/index-C37_ppWv.d.ts.map +0 -1
- package/dist/index-C6NEd5y_.d.ts.map +0 -1
- package/dist/ipc-BKVIIOqH.js +0 -331
- package/dist/ipc-BKVIIOqH.js.map +0 -1
- package/dist/ipc.d.ts.map +0 -1
- package/dist/isolation-Kfoof0MM.d.ts.map +0 -1
- package/dist/json-rpc-rSWMUh9b.js +0 -192
- package/dist/json-rpc-rSWMUh9b.js.map +0 -1
- package/dist/logger--C1VQjwJ.js.map +0 -1
- package/dist/mcp-CgNd-f3F.js.map +0 -1
- package/dist/messages-2jcOA_5R.js.map +0 -1
- package/dist/openai-compat-Dy56weK8.js.map +0 -1
- package/dist/output-cap-C9zukcCj.js +0 -100
- package/dist/output-cap-C9zukcCj.js.map +0 -1
- package/dist/panels-B6gRk4bf.js +0 -789
- package/dist/panels-B6gRk4bf.js.map +0 -1
- package/dist/plugins-gbI7SBA6.js.map +0 -1
- package/dist/prompts-Pqc3JdW_.d.ts.map +0 -1
- package/dist/run-summary-BU_NgwUT.js +0 -269
- package/dist/run-summary-BU_NgwUT.js.map +0 -1
- package/dist/sandbox-BH0WQkXn.d.ts.map +0 -1
- package/dist/session/sqlite.js.map +0 -1
- package/dist/session-BqRP1hS7.js.map +0 -1
- package/dist/shell-path-DfdXrGg9.js +0 -1549
- package/dist/shell-path-DfdXrGg9.js.map +0 -1
- package/dist/skills-BC3dodWp.js.map +0 -1
- package/dist/src-CkNQKFKr.js.map +0 -1
- package/dist/todo-edits-UOwgxGKu.js +0 -528
- package/dist/todo-edits-UOwgxGKu.js.map +0 -1
- package/dist/tool-formatters-DoRLnfuD.d.ts +0 -759
- package/dist/tool-formatters-DoRLnfuD.d.ts.map +0 -1
- package/dist/transcript-anchors-BeudMbXx.d.ts +0 -1762
- package/dist/transcript-anchors-BeudMbXx.d.ts.map +0 -1
- package/dist/turn-operations-C8bMBDl_.d.ts +0 -1258
- package/dist/turn-operations-C8bMBDl_.d.ts.map +0 -1
- package/dist/turn-operations-DrbJlpq9.js.map +0 -1
- package/dist/types-CWgENVLY.js.map +0 -1
- package/dist/xai-CazjStOK.js.map +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
//#region src/ipc/hosts/connection-loop.ts
|
|
2
|
+
const FOR_GOOD = {
|
|
3
|
+
auth: "auth-refused",
|
|
4
|
+
identity: "identity"
|
|
5
|
+
};
|
|
6
|
+
function message(err) {
|
|
7
|
+
return err instanceof Error ? err.message : String(err);
|
|
8
|
+
}
|
|
9
|
+
function keepHostConnected(options) {
|
|
10
|
+
const { connect: open, update, classify = () => "retry", onConnected, onSignal, onDisconnected } = options;
|
|
11
|
+
const minDelay = options.minDelayMs ?? 1e3;
|
|
12
|
+
const maxDelay = options.maxDelayMs ?? 3e4;
|
|
13
|
+
let stopped = false;
|
|
14
|
+
let client = null;
|
|
15
|
+
let timer = null;
|
|
16
|
+
let delay = minDelay;
|
|
17
|
+
let everConnected = false;
|
|
18
|
+
let abort = new AbortController();
|
|
19
|
+
let connecting = false;
|
|
20
|
+
const schedule = () => {
|
|
21
|
+
if (stopped || timer) return;
|
|
22
|
+
timer = setTimeout(() => {
|
|
23
|
+
timer = null;
|
|
24
|
+
connect();
|
|
25
|
+
}, delay);
|
|
26
|
+
timer.unref?.();
|
|
27
|
+
delay = Math.min(delay * 2, maxDelay);
|
|
28
|
+
};
|
|
29
|
+
async function connect() {
|
|
30
|
+
if (stopped || connecting) return;
|
|
31
|
+
connecting = true;
|
|
32
|
+
update({ status: everConnected ? "reconnecting" : "connecting" });
|
|
33
|
+
try {
|
|
34
|
+
let closed = false;
|
|
35
|
+
const attempt = {};
|
|
36
|
+
const connected = await open({
|
|
37
|
+
signal: abort.signal,
|
|
38
|
+
onClose: () => {
|
|
39
|
+
closed = true;
|
|
40
|
+
if (stopped || attempt.client === void 0 || client !== attempt.client) return;
|
|
41
|
+
client = null;
|
|
42
|
+
update({
|
|
43
|
+
client: null,
|
|
44
|
+
status: "reconnecting"
|
|
45
|
+
});
|
|
46
|
+
onDisconnected?.();
|
|
47
|
+
schedule();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
attempt.client = connected;
|
|
51
|
+
if (stopped || closed) {
|
|
52
|
+
connected.close();
|
|
53
|
+
if (!stopped) {
|
|
54
|
+
update({
|
|
55
|
+
client: null,
|
|
56
|
+
status: everConnected ? "reconnecting" : "offline"
|
|
57
|
+
});
|
|
58
|
+
schedule();
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
client = connected;
|
|
63
|
+
everConnected = true;
|
|
64
|
+
delay = minDelay;
|
|
65
|
+
const hostName = connected.hello.hostName;
|
|
66
|
+
update({
|
|
67
|
+
client: connected,
|
|
68
|
+
status: "connected",
|
|
69
|
+
error: void 0,
|
|
70
|
+
...hostName ? { serverName: hostName } : {}
|
|
71
|
+
});
|
|
72
|
+
if (onSignal) connected.onSignal(onSignal);
|
|
73
|
+
onConnected?.(connected);
|
|
74
|
+
} catch (err) {
|
|
75
|
+
if (stopped) return;
|
|
76
|
+
const refused = FOR_GOOD[classify(err)];
|
|
77
|
+
update({
|
|
78
|
+
client: null,
|
|
79
|
+
status: refused ?? "offline",
|
|
80
|
+
error: message(err)
|
|
81
|
+
});
|
|
82
|
+
if (!refused) schedule();
|
|
83
|
+
} finally {
|
|
84
|
+
connecting = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
connect();
|
|
88
|
+
return {
|
|
89
|
+
stop: () => {
|
|
90
|
+
stopped = true;
|
|
91
|
+
abort.abort();
|
|
92
|
+
if (timer) clearTimeout(timer);
|
|
93
|
+
client?.close();
|
|
94
|
+
client = null;
|
|
95
|
+
update({ client: null });
|
|
96
|
+
},
|
|
97
|
+
retry: () => {
|
|
98
|
+
if (stopped || client) return;
|
|
99
|
+
if (timer) {
|
|
100
|
+
clearTimeout(timer);
|
|
101
|
+
timer = null;
|
|
102
|
+
}
|
|
103
|
+
delay = minDelay;
|
|
104
|
+
abort = new AbortController();
|
|
105
|
+
connect();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { keepHostConnected as t };
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=connection-loop-gdh22LTI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-loop-gdh22LTI.js","names":[],"sources":["../src/ipc/hosts/connection-loop.ts"],"sourcesContent":["/**\n * Keeps one host connected for a client's lifetime: connect, hand the client\n * to its owner, reconnect with backoff (1 s doubling to 30 s) when it drops,\n * and report the status a Hosts page and a sessions list show. Shared by the\n * TUI (every host of its directory: This computer and each server) and the\n * GUI main process (each saved server).\n *\n * Transport-agnostic, no WebSocket import (the TUI loads it statically, for\n * This computer): the owner passes `connect`, and a `classify` that says\n * whether a failure means \"refused for good\" (a token turned down, or a\n * different server answering at a saved URL: no retry until something\n * changes) or \"try again later\".\n */\nimport type { HostConnectionStatus } from '../../chat/hosts/connection'\nimport type { HostSignal } from '../protocol'\nimport type { IpcClient } from '../transports/client-core'\n\n/** How a failed connect is handled: retried with backoff, or reported and left alone. */\nexport type HostFailureKind = 'auth' | 'identity' | 'retry'\n\nconst FOR_GOOD: Partial<Record<HostFailureKind, HostConnectionStatus>> = { auth: 'auth-refused', identity: 'identity' }\n\n/** What the loop says about its host, applied by the owner to its directory entry. */\nexport interface HostConnectionPatch {\n client?: IpcClient | null\n status?: HostConnectionStatus\n /** Why the last connect failed; `undefined` once connected. */\n error?: string | undefined\n /** The host's own name, from its `ipc.hello`. */\n serverName?: string\n}\n\nexport interface HostConnectionLoopOptions {\n /** One connect attempt. `onClose` fires when that connection drops (not on `close()`). */\n connect: (options: { signal: AbortSignal, onClose: () => void }) => Promise<IpcClient>\n update: (patch: HostConnectionPatch) => void\n /**\n * `auth`: the token was refused; `identity`: another host answered. Both\n * are for good (no retry until `retry()`). Default: every failure retries.\n */\n classify?: (err: unknown) => HostFailureKind\n /** Connected (also after a reconnect). */\n onConnected?: (client: IpcClient) => void\n /** Every signal of the live connection. */\n onSignal?: (signal: HostSignal) => void\n /** The live connection dropped (a reconnect is scheduled). */\n onDisconnected?: () => void\n /** Backoff bounds, ms (tests shrink them). */\n minDelayMs?: number\n maxDelayMs?: number\n}\n\nexport interface HostConnectionLoop {\n stop: () => void\n /** Try now (a manual retry, or after an auth fix). */\n retry: () => void\n}\n\nfunction message(err: unknown): string {\n return err instanceof Error ? err.message : String(err)\n}\n\nexport function keepHostConnected(options: HostConnectionLoopOptions): HostConnectionLoop {\n const { connect: open, update, classify = () => 'retry', onConnected, onSignal, onDisconnected } = options\n const minDelay = options.minDelayMs ?? 1000\n const maxDelay = options.maxDelayMs ?? 30_000\n let stopped = false\n let client: IpcClient | null = null\n let timer: ReturnType<typeof setTimeout> | null = null\n let delay = minDelay\n let everConnected = false\n let abort = new AbortController()\n let connecting = false\n\n const schedule = (): void => {\n if (stopped || timer)\n return\n timer = setTimeout(() => {\n timer = null\n void connect()\n }, delay)\n timer.unref?.()\n delay = Math.min(delay * 2, maxDelay)\n }\n\n async function connect(): Promise<void> {\n if (stopped || connecting)\n return\n connecting = true\n update({ status: everConnected ? 'reconnecting' : 'connecting' })\n try {\n let closed = false\n // Set once the connect settles: its `onClose` can fire mid-handshake, before then (`closed` covers that).\n const attempt: { client?: IpcClient } = {}\n const connected = await open({\n signal: abort.signal,\n onClose: () => {\n closed = true\n if (stopped || attempt.client === undefined || client !== attempt.client)\n return\n client = null\n update({ client: null, status: 'reconnecting' })\n onDisconnected?.()\n schedule()\n },\n })\n attempt.client = connected\n if (stopped || closed) {\n connected.close()\n // Dropped mid-handshake: its `onClose` bailed (no client yet), so the retry is ours to schedule.\n if (!stopped) {\n update({ client: null, status: everConnected ? 'reconnecting' : 'offline' })\n schedule()\n }\n return\n }\n client = connected\n everConnected = true\n delay = minDelay\n const hostName = connected.hello.hostName\n update({ client: connected, status: 'connected', error: undefined, ...(hostName ? { serverName: hostName } : {}) })\n if (onSignal)\n connected.onSignal(onSignal)\n onConnected?.(connected)\n }\n catch (err) {\n if (stopped)\n return\n const refused = FOR_GOOD[classify(err)]\n update({ client: null, status: refused ?? 'offline', error: message(err) })\n if (!refused)\n schedule()\n }\n finally {\n connecting = false\n }\n }\n\n void connect()\n return {\n stop: () => {\n stopped = true\n abort.abort()\n if (timer)\n clearTimeout(timer)\n client?.close()\n client = null\n update({ client: null })\n },\n retry: () => {\n if (stopped || client)\n return\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n delay = minDelay\n abort = new AbortController()\n void connect()\n },\n }\n}\n"],"mappings":";AAoBA,MAAM,WAAmE;CAAE,MAAM;CAAgB,UAAU;AAAW;AAsCtH,SAAS,QAAQ,KAAsB;CACrC,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACxD;AAEA,SAAgB,kBAAkB,SAAwD;CACxF,MAAM,EAAE,SAAS,MAAM,QAAQ,iBAAiB,SAAS,aAAa,UAAU,mBAAmB;CACnG,MAAM,WAAW,QAAQ,cAAc;CACvC,MAAM,WAAW,QAAQ,cAAc;CACvC,IAAI,UAAU;CACd,IAAI,SAA2B;CAC/B,IAAI,QAA8C;CAClD,IAAI,QAAQ;CACZ,IAAI,gBAAgB;CACpB,IAAI,QAAQ,IAAI,gBAAgB;CAChC,IAAI,aAAa;CAEjB,MAAM,iBAAuB;EAC3B,IAAI,WAAW,OACb;EACF,QAAQ,iBAAiB;GACvB,QAAQ;GACR,QAAa;EACf,GAAG,KAAK;EACR,MAAM,QAAQ;EACd,QAAQ,KAAK,IAAI,QAAQ,GAAG,QAAQ;CACtC;CAEA,eAAe,UAAyB;EACtC,IAAI,WAAW,YACb;EACF,aAAa;EACb,OAAO,EAAE,QAAQ,gBAAgB,iBAAiB,aAAa,CAAC;EAChE,IAAI;GACF,IAAI,SAAS;GAEb,MAAM,UAAkC,CAAC;GACzC,MAAM,YAAY,MAAM,KAAK;IAC3B,QAAQ,MAAM;IACd,eAAe;KACb,SAAS;KACT,IAAI,WAAW,QAAQ,WAAW,KAAA,KAAa,WAAW,QAAQ,QAChE;KACF,SAAS;KACT,OAAO;MAAE,QAAQ;MAAM,QAAQ;KAAe,CAAC;KAC/C,iBAAiB;KACjB,SAAS;IACX;GACF,CAAC;GACD,QAAQ,SAAS;GACjB,IAAI,WAAW,QAAQ;IACrB,UAAU,MAAM;IAEhB,IAAI,CAAC,SAAS;KACZ,OAAO;MAAE,QAAQ;MAAM,QAAQ,gBAAgB,iBAAiB;KAAU,CAAC;KAC3E,SAAS;IACX;IACA;GACF;GACA,SAAS;GACT,gBAAgB;GAChB,QAAQ;GACR,MAAM,WAAW,UAAU,MAAM;GACjC,OAAO;IAAE,QAAQ;IAAW,QAAQ;IAAa,OAAO,KAAA;IAAW,GAAI,WAAW,EAAE,YAAY,SAAS,IAAI,CAAC;GAAG,CAAC;GAClH,IAAI,UACF,UAAU,SAAS,QAAQ;GAC7B,cAAc,SAAS;EACzB,SACO,KAAK;GACV,IAAI,SACF;GACF,MAAM,UAAU,SAAS,SAAS,GAAG;GACrC,OAAO;IAAE,QAAQ;IAAM,QAAQ,WAAW;IAAW,OAAO,QAAQ,GAAG;GAAE,CAAC;GAC1E,IAAI,CAAC,SACH,SAAS;EACb,UACQ;GACN,aAAa;EACf;CACF;CAEA,QAAa;CACb,OAAO;EACL,YAAY;GACV,UAAU;GACV,MAAM,MAAM;GACZ,IAAI,OACF,aAAa,KAAK;GACpB,QAAQ,MAAM;GACd,SAAS;GACT,OAAO,EAAE,QAAQ,KAAK,CAAC;EACzB;EACA,aAAa;GACX,IAAI,WAAW,QACb;GACF,IAAI,OAAO;IACT,aAAa,KAAK;IAClB,QAAQ;GACV;GACA,QAAQ;GACR,QAAQ,IAAI,gBAAgB;GAC5B,QAAa;EACf;CACF;AACF"}
|