@fased/fased 0.1.58 → 0.1.60
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 +0 -0
- package/assets/avatar-placeholder.svg +0 -0
- package/assets/chrome-extension/README.md +0 -0
- package/assets/chrome-extension/background-utils.js +0 -0
- package/assets/chrome-extension/background.js +0 -0
- package/assets/chrome-extension/icons/icon128.png +0 -0
- package/assets/chrome-extension/icons/icon16.png +0 -0
- package/assets/chrome-extension/icons/icon32.png +0 -0
- package/assets/chrome-extension/icons/icon48.png +0 -0
- package/assets/chrome-extension/manifest.json +0 -0
- package/assets/chrome-extension/options-validation.js +0 -0
- package/assets/chrome-extension/options.html +0 -0
- package/assets/chrome-extension/options.js +0 -0
- package/config/official-external-plugin-catalog.json +0 -0
- package/config/sat-runtime.env +0 -0
- package/dist/agents/anthropic-payload-policy.js +188 -0
- package/dist/agents/anthropic-transport-stream.js +736 -0
- package/dist/agents/copilot-dynamic-headers.js +1 -1
- package/dist/agents/custom-api-registry.js +21 -0
- package/dist/agents/google-transport-stream.js +543 -0
- package/dist/agents/models-config.js +2 -1
- package/dist/agents/openai-completions-compat.js +49 -0
- package/dist/agents/openai-responses-payload-policy.js +100 -0
- package/dist/agents/openai-tool-schema.js +130 -0
- package/dist/agents/openai-transport-stream.js +1040 -0
- package/dist/agents/pi-embedded-runner/compact.js +9 -0
- package/dist/agents/pi-embedded-runner/run/attempt.js +9 -0
- package/dist/agents/provider-request-config.js +1 -1
- package/dist/agents/provider-stream.js +29 -0
- package/dist/agents/provider-transport-fetch.js +89 -0
- package/dist/agents/provider-transport-stream.js +72 -0
- package/dist/agents/system-prompt-cache-boundary.js +1 -1
- package/dist/agents/system-prompt.js +1 -1
- package/dist/agents/transport-message-transform.js +143 -0
- package/dist/agents/transport-stream-shared.js +81 -0
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/HOOK.md +0 -0
- package/dist/bundled/bootstrap-extra-files/HOOK.md +0 -0
- package/dist/bundled/command-logger/HOOK.md +0 -0
- package/dist/bundled/session-memory/HOOK.md +0 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/index.html +0 -0
- package/dist/channels/delivery.js +78 -0
- package/dist/channels/plugins/catalog.js +10 -5
- package/dist/cli/components-cli.js +16 -13
- package/dist/cli/daemon-cli/install.js +10 -0
- package/dist/cli/program/register.subclis.js +9 -0
- package/dist/cli/providers-cli.js +79 -6
- package/dist/cli/services-cli.js +28 -0
- package/dist/cli/update-cli/update-command.js +73 -7
- package/dist/commands/auth-choice.js +1 -1
- package/dist/commands/daemon-install-helpers.js +2 -1
- package/dist/commands/models/list.auth-overview.js +12 -0
- package/dist/commands/onboard-channels.js +5 -0
- package/dist/commands/onboard-helpers.js +1 -1
- package/dist/commands/vllm-setup.js +12 -3
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/{app-CpgQGqe6.js → app-CqF4Tc9n.js} +1706 -1675
- package/dist/control-ui/assets/{index-DiBBflpv.js → index-DYggPSfy.js} +3 -3
- package/dist/control-ui/assets/{providers-Cc89iMdx.js → providers-QMn4w2_f.js} +3 -3
- package/dist/control-ui/boot-watchdog.js +0 -0
- package/dist/control-ui/fased-logo.svg +0 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.svg +0 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/manifest.webmanifest +0 -0
- package/dist/control-ui/version.json +1 -1
- package/dist/daemon/program-args.js +34 -0
- package/dist/export-html/template.css +0 -0
- package/dist/export-html/template.html +0 -0
- package/dist/export-html/template.js +0 -0
- package/dist/export-html/vendor/highlight.min.js +0 -0
- package/dist/export-html/vendor/marked.min.js +0 -0
- package/dist/gateway/control-reply-text.js +10 -1
- package/dist/gateway/method-scopes.js +2 -0
- package/dist/gateway/protocol/schema/agents-models-skills.js +1 -0
- package/dist/gateway/server-chat.js +3 -3
- package/dist/gateway/server-methods/channels.js +10 -2
- package/dist/gateway/server-methods/chat.js +19 -12
- package/dist/gateway/server-methods/models.js +4 -0
- package/dist/gateway/server-methods/services.js +47 -2
- package/dist/gateway/server-methods-list.js +2 -0
- package/dist/gateway/session-event-payloads.js +20 -9
- package/dist/infra/google-api-base-url.js +29 -0
- package/dist/infra/managed-runtime-bootstrap.js +106 -0
- package/dist/plugin-sdk/{accounts-BJuN64m-.js → accounts-DxblobYM.js} +1 -1
- package/dist/plugin-sdk/{actions-DaEvM9Bl.js → actions-D4UNimWa.js} +2 -2
- package/dist/plugin-sdk/{active-listener-B8Kuanet.js → active-listener-CFuy106s.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-D7tCO0EH.js → audio-preflight-C2QXh5Ml.js} +25 -25
- package/dist/plugin-sdk/{audit-CVWH4BVP.js → audit-Cs0K7LBp.js} +1 -1
- package/dist/plugin-sdk/{channel-access-CH9FAS-I.js → channel-access-D5aHoTY8.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-CI0je66H.js → channel-access-configure-Dvch9mMQ.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.js +4 -4
- package/dist/plugin-sdk/{chunk-01oBnQjh.js → chunk-B0FUGc5A.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-D2zDJ8q8.js → chunk-items-3ZyiGiff.js} +1 -1
- package/dist/plugin-sdk/command-status.js +25 -25
- package/dist/plugin-sdk/{commands-registry-ckg4fhYa.js → commands-registry-DmDRhRAU.js} +2 -2
- package/dist/plugin-sdk/{common-zHvdO8ly.js → common-CfUOowOp.js} +1 -1
- package/dist/plugin-sdk/{config-DrhYEiCM.js → config-mxULv0fQ.js} +1 -1
- package/dist/plugin-sdk/{config-schema-BtjeV5Hm.js → config-schema-C9tx1Lyz.js} +4410 -465
- package/dist/plugin-sdk/discord.d.ts +1 -1
- package/dist/plugin-sdk/discord.js +19 -19
- package/dist/plugin-sdk/{handle-action-5dhYpMbP.js → handle-action-DbVCF9HZ.js} +13 -13
- package/dist/plugin-sdk/{helpers-E9aafRzA.js → helpers-BXbdgs5H.js} +1 -1
- package/dist/plugin-sdk/{image-ops-D2U9ctmu.js → image-ops-D7jPxaph.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +11 -11
- package/dist/plugin-sdk/index.js +27 -27
- package/dist/plugin-sdk/{login-hql0fNuL.js → login-BRxww6nv.js} +3 -3
- package/dist/plugin-sdk/{login-qr-DJJ0svux.js → login-qr-DJXsk9XH.js} +3 -3
- package/dist/plugin-sdk/{manager-ciNnAMBn.js → manager-Y2S_5IlI.js} +2 -2
- package/dist/plugin-sdk/{markdown-tables-BKxbua_h.js → markdown-tables-DHLFQqaF.js} +1 -1
- package/dist/plugin-sdk/{media-DUIZ6x9H.js → media-Czo4carg.js} +2 -2
- package/dist/plugin-sdk/{monitor-D-giXewh.js → monitor-XbunF2-r.js} +32 -32
- package/dist/plugin-sdk/{monitor-CNSGw4uQ.js → monitor-Xgx6vGcg.js} +29 -29
- package/dist/plugin-sdk/ollama-runtime.js +970 -0
- package/dist/plugin-sdk/{openresponses-http-dbTd8UMk.js → openresponses-http-BRUr0JLE.js} +25 -25
- package/dist/plugin-sdk/{optional-runtime-dependency-CKsJL1PD.js → optional-runtime-dependency-DdMbxS24.js} +1 -1
- package/dist/plugin-sdk/{outbound-DhGrjRft.js → outbound-Db8mRN6P.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-DAF8huFz.js → outbound-attachment-BqFjcypb.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-BsJVvXkb.js → pairing-message-B3GC_7CD.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-DwM-BNbj.js → pairing-store-CQikgIbw.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-DkIdlJvJ.js → pi-model-discovery-CY3m5zJP.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-Cv7okUMt.js → pi-model-discovery-runtime-DSh1T2pn.js} +2 -2
- package/dist/plugin-sdk/{pw-ai-Dxd87W3J.js → pw-ai-BzV0f18N.js} +3 -3
- package/dist/plugin-sdk/{replies-Bx61SvAC.js → replies-Fzh9PhXl.js} +2 -2
- package/dist/plugin-sdk/{resolve-outbound-target-bc-FpPZg.js → resolve-outbound-target-KpF3co6T.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-D0eBYPtb.js → resolve-route-CDl74O19.js} +1 -1
- package/dist/plugin-sdk/{retry-policy-HTrC4zfC.js → retry-policy-D4uiqUOG.js} +1 -1
- package/dist/plugin-sdk/{runtime-BVkIrYLQ.js → runtime-Bb6KRnCC.js} +6 -4
- package/dist/plugin-sdk/{runtime-dependency-B2PqMdBu.js → runtime-dependency-Ch7J9a0d.js} +11 -11
- package/dist/plugin-sdk/sat-runtime.js +25 -25
- package/dist/plugin-sdk/{send-DgzZUx2i.js → send-5nFktR1n.js} +5 -5
- package/dist/plugin-sdk/{send-DT2egZNK.js → send-Bfzf11VY.js} +7 -7
- package/dist/plugin-sdk/{send-BGDGzxUu.js → send-C4k4JuJN.js} +6 -6
- package/dist/plugin-sdk/{send-KJy3ajA3.js → send-D-uDKGIq.js} +6 -6
- package/dist/plugin-sdk/{send-C3QWSYLR.js → send-Du8ykP1k.js} +8 -8
- package/dist/plugin-sdk/{session-BCIEFOu1.js → session-CS-Td9EM.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-CyIkcR8P.js → skill-commands-CFAlXWHk.js} +2 -2
- package/dist/plugin-sdk/{slack-DjKNh2uh.js → slack-BzJfCWjq.js} +37 -37
- package/dist/plugin-sdk/{slack-actions-CeM9LWDp.js → slack-actions-BcMkNv1Z.js} +11 -11
- package/dist/plugin-sdk/slack.d.ts +1 -1
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-DcWzQ2wx.js → sticker-cache-Dex-XpRj.js} +3 -3
- package/dist/plugin-sdk/{tables-B2iehyjG.js → tables-bFXyRpkx.js} +1 -1
- package/dist/plugin-sdk/{targets-BPket0SF.js → targets-DH7a9lKB.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-Cx_HWVht.js → telegram-actions-DoFTGX4z.js} +28 -28
- package/dist/plugin-sdk/telegram.d.ts +1 -1
- package/dist/plugin-sdk/telegram.js +8 -8
- package/dist/plugin-sdk/{thread-bindings.lifecycle-CYH69SIw.js → thread-bindings.lifecycle-CgOvvdw8.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-BN6461WG.js → thread-bindings.state-CQpk44Hq.js} +2 -2
- package/dist/plugin-sdk/{web-vR-oNiBv.js → web--wC3ZfVl.js} +30 -30
- package/dist/plugin-sdk/{whatsapp-actions-BYNf8ceY.js → whatsapp-actions-BtSc2CBv.js} +13 -13
- package/dist/plugin-sdk/{whatsapp-heartbeat-DZwa8MF0.js → whatsapp-heartbeat-Bg9TuYzl.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +6 -6
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-WGtdw_6h.js → wsl-C4DGFkOd.js} +3 -3
- package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-FaYR6KdD.d.ts} +61 -61
- package/dist/plugins/provider-runtime.js +79 -0
- package/dist/providers/refresh.js +14 -0
- package/docs/reference/templates/AGENTS.dev.md +0 -0
- package/docs/reference/templates/AGENTS.md +0 -0
- package/docs/reference/templates/BOOT.md +0 -0
- package/docs/reference/templates/BOOTSTRAP.md +0 -0
- package/docs/reference/templates/HEARTBEAT.md +0 -0
- package/docs/reference/templates/IDENTITY.dev.md +0 -0
- package/docs/reference/templates/IDENTITY.md +0 -0
- package/docs/reference/templates/SOUL.dev.md +0 -0
- package/docs/reference/templates/SOUL.md +0 -0
- package/docs/reference/templates/TOOLS.dev.md +0 -0
- package/docs/reference/templates/TOOLS.md +0 -0
- package/docs/reference/templates/USER.dev.md +0 -0
- package/docs/reference/templates/USER.md +0 -0
- package/extensions/acpx/fased.plugin.json +0 -0
- package/extensions/acpx/package.json +1 -1
- package/extensions/acpx/skills/acp-router/SKILL.md +0 -0
- package/extensions/acpx/src/config.ts +0 -0
- package/extensions/acpx/src/ensure.ts +0 -0
- package/extensions/acpx/src/mcp-readonly-tool-registry.ts +0 -0
- package/extensions/acpx/src/mcp-status-adapter.ts +0 -0
- package/extensions/acpx/src/runtime-internals/events.ts +0 -0
- package/extensions/acpx/src/runtime-internals/process.ts +0 -0
- package/extensions/acpx/src/runtime-internals/shared.ts +0 -0
- package/extensions/acpx/src/runtime.ts +0 -0
- package/extensions/acpx/src/service.ts +0 -0
- package/extensions/bluebubbles/README.md +0 -0
- package/extensions/bluebubbles/fased.plugin.json +0 -0
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/account-resolve.ts +0 -0
- package/extensions/bluebubbles/src/accounts.ts +0 -0
- package/extensions/bluebubbles/src/actions.ts +0 -0
- package/extensions/bluebubbles/src/attachments.ts +0 -0
- package/extensions/bluebubbles/src/channel.ts +0 -0
- package/extensions/bluebubbles/src/chat.ts +0 -0
- package/extensions/bluebubbles/src/config-schema.ts +0 -0
- package/extensions/bluebubbles/src/history.ts +0 -0
- package/extensions/bluebubbles/src/media-send.ts +0 -0
- package/extensions/bluebubbles/src/monitor-normalize.ts +0 -0
- package/extensions/bluebubbles/src/monitor-processing.ts +0 -0
- package/extensions/bluebubbles/src/monitor-reply-cache.ts +0 -0
- package/extensions/bluebubbles/src/monitor-shared.ts +0 -0
- package/extensions/bluebubbles/src/monitor.ts +0 -0
- package/extensions/bluebubbles/src/multipart.ts +0 -0
- package/extensions/bluebubbles/src/onboarding.ts +0 -0
- package/extensions/bluebubbles/src/probe.ts +0 -0
- package/extensions/bluebubbles/src/reactions.ts +0 -0
- package/extensions/bluebubbles/src/request-url.ts +0 -0
- package/extensions/bluebubbles/src/runtime.ts +0 -0
- package/extensions/bluebubbles/src/send-helpers.ts +0 -0
- package/extensions/bluebubbles/src/send.ts +0 -0
- package/extensions/bluebubbles/src/targets.ts +0 -0
- package/extensions/bluebubbles/src/test-mocks.ts +0 -0
- package/extensions/bluebubbles/src/types.ts +0 -0
- package/extensions/copilot-proxy/README.md +0 -0
- package/extensions/copilot-proxy/fased.plugin.json +0 -0
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/device-pair/fased.plugin.json +0 -0
- package/extensions/diagnostics-otel/fased.plugin.json +0 -0
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diagnostics-otel/src/service.ts +0 -0
- package/extensions/fased-federation/README.md +0 -0
- package/extensions/fased-federation/fased.plugin.json +0 -0
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/README.md +0 -0
- package/extensions/google-gemini-cli-auth/fased.plugin.json +0 -0
- package/extensions/google-gemini-cli-auth/oauth.ts +0 -0
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/fased.plugin.json +0 -0
- package/extensions/imessage/package.json +1 -1
- package/extensions/imessage/src/channel.ts +0 -0
- package/extensions/imessage/src/runtime.ts +0 -0
- package/extensions/irc/fased.plugin.json +0 -0
- package/extensions/irc/package.json +1 -1
- package/extensions/irc/src/accounts.ts +0 -0
- package/extensions/irc/src/channel.ts +0 -0
- package/extensions/irc/src/client.ts +0 -0
- package/extensions/irc/src/config-schema.ts +0 -0
- package/extensions/irc/src/connect-options.ts +0 -0
- package/extensions/irc/src/control-chars.ts +0 -0
- package/extensions/irc/src/inbound.ts +0 -0
- package/extensions/irc/src/monitor.ts +0 -0
- package/extensions/irc/src/normalize.ts +0 -0
- package/extensions/irc/src/onboarding.ts +0 -0
- package/extensions/irc/src/policy.ts +0 -0
- package/extensions/irc/src/probe.ts +0 -0
- package/extensions/irc/src/protocol.ts +0 -0
- package/extensions/irc/src/runtime.ts +0 -0
- package/extensions/irc/src/send.ts +0 -0
- package/extensions/irc/src/types.ts +0 -0
- package/extensions/line/fased.plugin.json +0 -0
- package/extensions/line/package.json +1 -1
- package/extensions/line/src/card-command.ts +0 -0
- package/extensions/line/src/channel.ts +0 -0
- package/extensions/line/src/runtime.ts +0 -0
- package/extensions/llm-task/README.md +0 -0
- package/extensions/llm-task/fased.plugin.json +0 -0
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/README.md +0 -0
- package/extensions/lobster/SKILL.md +0 -0
- package/extensions/lobster/fased.plugin.json +0 -0
- package/extensions/lobster/package.json +1 -1
- package/extensions/lobster/src/test-helpers.ts +0 -0
- package/extensions/lobster/src/windows-spawn.ts +0 -0
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/fased.plugin.json +0 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/matrix/src/actions.ts +0 -0
- package/extensions/matrix/src/channel.ts +0 -0
- package/extensions/matrix/src/config-schema.ts +0 -0
- package/extensions/matrix/src/directory-live.ts +0 -0
- package/extensions/matrix/src/group-mentions.ts +0 -0
- package/extensions/matrix/src/matrix/accounts.ts +0 -0
- package/extensions/matrix/src/matrix/actions/client.ts +0 -0
- package/extensions/matrix/src/matrix/actions/limits.ts +0 -0
- package/extensions/matrix/src/matrix/actions/messages.ts +0 -0
- package/extensions/matrix/src/matrix/actions/pins.ts +0 -0
- package/extensions/matrix/src/matrix/actions/reactions.ts +0 -0
- package/extensions/matrix/src/matrix/actions/room.ts +0 -0
- package/extensions/matrix/src/matrix/actions/summary.ts +0 -0
- package/extensions/matrix/src/matrix/actions/types.ts +0 -0
- package/extensions/matrix/src/matrix/actions.ts +0 -0
- package/extensions/matrix/src/matrix/active-client.ts +0 -0
- package/extensions/matrix/src/matrix/client/config.ts +0 -0
- package/extensions/matrix/src/matrix/client/create-client.ts +0 -0
- package/extensions/matrix/src/matrix/client/logging.ts +0 -0
- package/extensions/matrix/src/matrix/client/runtime.ts +0 -0
- package/extensions/matrix/src/matrix/client/shared.ts +0 -0
- package/extensions/matrix/src/matrix/client/storage.ts +0 -0
- package/extensions/matrix/src/matrix/client/types.ts +0 -0
- package/extensions/matrix/src/matrix/client-bootstrap.ts +0 -0
- package/extensions/matrix/src/matrix/client.ts +0 -0
- package/extensions/matrix/src/matrix/credentials.ts +0 -0
- package/extensions/matrix/src/matrix/deps.ts +0 -0
- package/extensions/matrix/src/matrix/format.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/access-policy.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/allowlist.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/auto-join.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/direct.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/events.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/handler.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/inbound-body.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/location.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/media.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/mentions.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/replies.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/room-info.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/rooms.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/threads.ts +0 -0
- package/extensions/matrix/src/matrix/monitor/types.ts +0 -0
- package/extensions/matrix/src/matrix/poll-types.ts +0 -0
- package/extensions/matrix/src/matrix/probe.ts +0 -0
- package/extensions/matrix/src/matrix/send/client.ts +0 -0
- package/extensions/matrix/src/matrix/send/formatting.ts +0 -0
- package/extensions/matrix/src/matrix/send/media.ts +0 -0
- package/extensions/matrix/src/matrix/send/targets.ts +0 -0
- package/extensions/matrix/src/matrix/send/types.ts +0 -0
- package/extensions/matrix/src/matrix/send-queue.ts +0 -0
- package/extensions/matrix/src/matrix/send.ts +0 -0
- package/extensions/matrix/src/onboarding.ts +0 -0
- package/extensions/matrix/src/outbound.ts +0 -0
- package/extensions/matrix/src/resolve-targets.ts +0 -0
- package/extensions/matrix/src/runtime.ts +0 -0
- package/extensions/matrix/src/tool-actions.ts +0 -0
- package/extensions/matrix/src/types.ts +0 -0
- package/extensions/mattermost/fased.plugin.json +0 -0
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mattermost/src/channel.ts +0 -0
- package/extensions/mattermost/src/config-schema.ts +0 -0
- package/extensions/mattermost/src/group-mentions.ts +0 -0
- package/extensions/mattermost/src/mattermost/accounts.ts +0 -0
- package/extensions/mattermost/src/mattermost/client.ts +0 -0
- package/extensions/mattermost/src/mattermost/monitor-auth.ts +0 -0
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -0
- package/extensions/mattermost/src/mattermost/monitor-onchar.ts +0 -0
- package/extensions/mattermost/src/mattermost/monitor-websocket.ts +0 -0
- package/extensions/mattermost/src/mattermost/monitor.ts +0 -0
- package/extensions/mattermost/src/mattermost/probe.ts +0 -0
- package/extensions/mattermost/src/mattermost/reactions.test-helpers.ts +0 -0
- package/extensions/mattermost/src/mattermost/reactions.ts +0 -0
- package/extensions/mattermost/src/mattermost/reconnect.ts +0 -0
- package/extensions/mattermost/src/mattermost/send.ts +0 -0
- package/extensions/mattermost/src/normalize.ts +0 -0
- package/extensions/mattermost/src/onboarding-helpers.ts +0 -0
- package/extensions/mattermost/src/onboarding.ts +0 -0
- package/extensions/mattermost/src/runtime.ts +0 -0
- package/extensions/mattermost/src/types.ts +0 -0
- package/extensions/memory-core/fased.plugin.json +0 -0
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/config.ts +0 -0
- package/extensions/memory-lancedb/fased.plugin.json +0 -0
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/README.md +0 -0
- package/extensions/minimax-portal-auth/fased.plugin.json +0 -0
- package/extensions/minimax-portal-auth/oauth.ts +0 -0
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/fased.plugin.json +0 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/attachments/download.ts +0 -0
- package/extensions/msteams/src/attachments/graph.ts +0 -0
- package/extensions/msteams/src/attachments/html.ts +0 -0
- package/extensions/msteams/src/attachments/payload.ts +0 -0
- package/extensions/msteams/src/attachments/remote-media.ts +0 -0
- package/extensions/msteams/src/attachments/shared.ts +0 -0
- package/extensions/msteams/src/attachments/types.ts +0 -0
- package/extensions/msteams/src/attachments.ts +0 -0
- package/extensions/msteams/src/channel.ts +0 -0
- package/extensions/msteams/src/conversation-store-fs.ts +0 -0
- package/extensions/msteams/src/conversation-store-memory.ts +0 -0
- package/extensions/msteams/src/conversation-store.ts +0 -0
- package/extensions/msteams/src/directory-live.ts +0 -0
- package/extensions/msteams/src/errors.ts +0 -0
- package/extensions/msteams/src/file-consent-helpers.ts +0 -0
- package/extensions/msteams/src/file-consent.ts +0 -0
- package/extensions/msteams/src/file-lock.ts +0 -0
- package/extensions/msteams/src/graph-chat.ts +0 -0
- package/extensions/msteams/src/graph-upload.ts +0 -0
- package/extensions/msteams/src/graph-users.ts +0 -0
- package/extensions/msteams/src/graph.ts +0 -0
- package/extensions/msteams/src/inbound.ts +0 -0
- package/extensions/msteams/src/media-helpers.ts +0 -0
- package/extensions/msteams/src/mentions.ts +0 -0
- package/extensions/msteams/src/messenger.ts +0 -0
- package/extensions/msteams/src/monitor-handler/inbound-media.ts +0 -0
- package/extensions/msteams/src/monitor-handler/message-handler.ts +0 -0
- package/extensions/msteams/src/monitor-handler.ts +0 -0
- package/extensions/msteams/src/monitor-types.ts +0 -0
- package/extensions/msteams/src/monitor.ts +0 -0
- package/extensions/msteams/src/onboarding.ts +0 -0
- package/extensions/msteams/src/outbound.ts +0 -0
- package/extensions/msteams/src/pending-uploads.ts +0 -0
- package/extensions/msteams/src/policy.ts +0 -0
- package/extensions/msteams/src/polls-store-memory.ts +0 -0
- package/extensions/msteams/src/polls.ts +0 -0
- package/extensions/msteams/src/probe.ts +0 -0
- package/extensions/msteams/src/reply-dispatcher.ts +0 -0
- package/extensions/msteams/src/resolve-allowlist.ts +0 -0
- package/extensions/msteams/src/runtime.ts +0 -0
- package/extensions/msteams/src/sdk-types.ts +0 -0
- package/extensions/msteams/src/sdk.ts +0 -0
- package/extensions/msteams/src/send-context.ts +0 -0
- package/extensions/msteams/src/send.ts +0 -0
- package/extensions/msteams/src/sent-message-cache.ts +0 -0
- package/extensions/msteams/src/storage.ts +0 -0
- package/extensions/msteams/src/store-fs.ts +0 -0
- package/extensions/msteams/src/test-runtime.ts +0 -0
- package/extensions/msteams/src/token-response.ts +0 -0
- package/extensions/msteams/src/token.ts +0 -0
- package/extensions/nextcloud-talk/fased.plugin.json +0 -0
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nextcloud-talk/src/accounts.ts +0 -0
- package/extensions/nextcloud-talk/src/config-schema.ts +0 -0
- package/extensions/nextcloud-talk/src/format.ts +0 -0
- package/extensions/nextcloud-talk/src/inbound.ts +0 -0
- package/extensions/nextcloud-talk/src/monitor.ts +0 -0
- package/extensions/nextcloud-talk/src/normalize.ts +0 -0
- package/extensions/nextcloud-talk/src/onboarding.ts +0 -0
- package/extensions/nextcloud-talk/src/policy.ts +0 -0
- package/extensions/nextcloud-talk/src/replay-guard.ts +0 -0
- package/extensions/nextcloud-talk/src/room-info.ts +0 -0
- package/extensions/nextcloud-talk/src/runtime.ts +0 -0
- package/extensions/nextcloud-talk/src/send.ts +0 -0
- package/extensions/nextcloud-talk/src/signature.ts +0 -0
- package/extensions/nextcloud-talk/src/types.ts +0 -0
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/README.md +0 -0
- package/extensions/nostr/fased.plugin.json +0 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/nostr/src/channel.ts +0 -0
- package/extensions/nostr/src/config-schema.ts +0 -0
- package/extensions/nostr/src/metrics.ts +0 -0
- package/extensions/nostr/src/nostr-bus.ts +0 -0
- package/extensions/nostr/src/nostr-profile-http.ts +0 -0
- package/extensions/nostr/src/nostr-profile-import.ts +0 -0
- package/extensions/nostr/src/nostr-profile.ts +0 -0
- package/extensions/nostr/src/nostr-state-store.ts +0 -0
- package/extensions/nostr/src/onboarding.ts +0 -0
- package/extensions/nostr/src/runtime.ts +0 -0
- package/extensions/nostr/src/seen-tracker.ts +0 -0
- package/extensions/nostr/src/types.ts +0 -0
- package/extensions/nostr/test/setup.ts +0 -0
- package/extensions/open-prose/README.md +0 -0
- package/extensions/open-prose/fased.plugin.json +0 -0
- package/extensions/open-prose/package.json +1 -1
- package/extensions/open-prose/skills/prose/LICENSE +0 -0
- package/extensions/open-prose/skills/prose/SKILL.md +0 -0
- package/extensions/open-prose/skills/prose/alt-borges.md +0 -0
- package/extensions/open-prose/skills/prose/alts/arabian-nights.md +0 -0
- package/extensions/open-prose/skills/prose/alts/borges.md +0 -0
- package/extensions/open-prose/skills/prose/alts/folk.md +0 -0
- package/extensions/open-prose/skills/prose/alts/homer.md +0 -0
- package/extensions/open-prose/skills/prose/alts/kafka.md +0 -0
- package/extensions/open-prose/skills/prose/compiler.md +0 -0
- package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/03-code-review.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/07-refactor.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/README.md +0 -0
- package/extensions/open-prose/skills/prose/examples/roadmap/README.md +0 -0
- package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +0 -0
- package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +0 -0
- package/extensions/open-prose/skills/prose/guidance/antipatterns.md +0 -0
- package/extensions/open-prose/skills/prose/guidance/patterns.md +0 -0
- package/extensions/open-prose/skills/prose/guidance/system-prompt.md +0 -0
- package/extensions/open-prose/skills/prose/help.md +0 -0
- package/extensions/open-prose/skills/prose/lib/README.md +0 -0
- package/extensions/open-prose/skills/prose/lib/calibrator.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/error-forensics.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/inspector.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/profiler.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/program-improver.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/project-memory.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/user-memory.prose +0 -0
- package/extensions/open-prose/skills/prose/lib/vm-improver.prose +0 -0
- package/extensions/open-prose/skills/prose/primitives/session.md +0 -0
- package/extensions/open-prose/skills/prose/prose.md +0 -0
- package/extensions/open-prose/skills/prose/state/filesystem.md +0 -0
- package/extensions/open-prose/skills/prose/state/in-context.md +0 -0
- package/extensions/open-prose/skills/prose/state/postgres.md +0 -0
- package/extensions/open-prose/skills/prose/state/sqlite.md +0 -0
- package/extensions/phone-control/fased.plugin.json +0 -0
- package/extensions/qwen-portal-auth/README.md +0 -0
- package/extensions/qwen-portal-auth/fased.plugin.json +0 -0
- package/extensions/qwen-portal-auth/oauth.ts +0 -0
- package/extensions/sat-mining/fased.plugin.json +0 -0
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/sat-mining/skills/sat-mining/SKILL.md +0 -0
- package/extensions/sat-mining/src/audit-store.ts +0 -0
- package/extensions/sat-mining/src/auto-planner.ts +0 -0
- package/extensions/sat-mining/src/chain-time.ts +0 -0
- package/extensions/sat-mining/src/client.ts +0 -0
- package/extensions/sat-mining/src/cycle-progress.ts +0 -0
- package/extensions/sat-mining/src/dispute-review.ts +0 -0
- package/extensions/sat-mining/src/hash-spec.ts +0 -0
- package/extensions/sat-mining/src/planner-analytics.ts +0 -0
- package/extensions/sat-mining/src/planner-outcomes.ts +0 -0
- package/extensions/sat-mining/src/planner-policy-eval.ts +0 -0
- package/extensions/sat-mining/src/planner-policy.ts +0 -0
- package/extensions/sat-mining/src/recovery-service.ts +0 -0
- package/extensions/sat-mining/src/replay.ts +0 -0
- package/extensions/sat-mining/src/service-read-timeout.ts +0 -0
- package/extensions/sat-mining/src/strategy-base.ts +0 -0
- package/extensions/sat-mining/src/strategy-engine.ts +0 -0
- package/extensions/sat-mining/src/strategy-validate.ts +0 -0
- package/extensions/shared/resolve-target-test-helpers.ts +0 -0
- package/extensions/signal/fased.plugin.json +0 -0
- package/extensions/signal/package.json +1 -1
- package/extensions/signal/src/channel.ts +0 -0
- package/extensions/signal/src/runtime.ts +0 -0
- package/extensions/synology-chat/fased.plugin.json +0 -0
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/synology-chat/src/accounts.ts +0 -0
- package/extensions/synology-chat/src/channel.ts +0 -0
- package/extensions/synology-chat/src/client.ts +0 -0
- package/extensions/synology-chat/src/runtime.ts +0 -0
- package/extensions/synology-chat/src/security.ts +0 -0
- package/extensions/synology-chat/src/types.ts +0 -0
- package/extensions/synology-chat/src/webhook-handler.ts +0 -0
- package/extensions/talk-voice/fased.plugin.json +0 -0
- package/extensions/thread-ownership/fased.plugin.json +0 -0
- package/extensions/tlon/README.md +0 -0
- package/extensions/tlon/fased.plugin.json +0 -0
- package/extensions/tlon/package.json +1 -1
- package/extensions/tlon/src/account-fields.ts +0 -0
- package/extensions/tlon/src/channel.ts +0 -0
- package/extensions/tlon/src/config-schema.ts +0 -0
- package/extensions/tlon/src/monitor/discovery.ts +0 -0
- package/extensions/tlon/src/monitor/history.ts +0 -0
- package/extensions/tlon/src/monitor/processed-messages.ts +0 -0
- package/extensions/tlon/src/monitor/utils.ts +0 -0
- package/extensions/tlon/src/onboarding.ts +0 -0
- package/extensions/tlon/src/runtime.ts +0 -0
- package/extensions/tlon/src/targets.ts +0 -0
- package/extensions/tlon/src/types.ts +0 -0
- package/extensions/tlon/src/urbit/auth.ts +0 -0
- package/extensions/tlon/src/urbit/base-url.ts +0 -0
- package/extensions/tlon/src/urbit/channel-client.ts +0 -0
- package/extensions/tlon/src/urbit/channel-ops.ts +0 -0
- package/extensions/tlon/src/urbit/context.ts +0 -0
- package/extensions/tlon/src/urbit/errors.ts +0 -0
- package/extensions/tlon/src/urbit/fetch.ts +0 -0
- package/extensions/tlon/src/urbit/send.ts +0 -0
- package/extensions/tlon/src/urbit/sse-client.ts +0 -0
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/README.md +0 -0
- package/extensions/twitch/fased.plugin.json +0 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/access-control.ts +0 -0
- package/extensions/twitch/src/actions.ts +0 -0
- package/extensions/twitch/src/client-manager-registry.ts +0 -0
- package/extensions/twitch/src/config-schema.ts +0 -0
- package/extensions/twitch/src/config.ts +0 -0
- package/extensions/twitch/src/monitor.ts +0 -0
- package/extensions/twitch/src/onboarding.ts +0 -0
- package/extensions/twitch/src/outbound.ts +0 -0
- package/extensions/twitch/src/probe.ts +0 -0
- package/extensions/twitch/src/resolver.ts +0 -0
- package/extensions/twitch/src/runtime.ts +0 -0
- package/extensions/twitch/src/send.ts +0 -0
- package/extensions/twitch/src/status.ts +0 -0
- package/extensions/twitch/src/test-fixtures.ts +0 -0
- package/extensions/twitch/src/twitch-client.ts +0 -0
- package/extensions/twitch/src/utils/markdown.ts +0 -0
- package/extensions/twitch/src/utils/twitch.ts +0 -0
- package/extensions/twitch/test/setup.ts +0 -0
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/README.md +0 -0
- package/extensions/voice-call/fased.plugin.json +0 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/allowlist.ts +0 -0
- package/extensions/voice-call/src/cli.ts +0 -0
- package/extensions/voice-call/src/core-bridge.ts +0 -0
- package/extensions/voice-call/src/http-headers.ts +0 -0
- package/extensions/voice-call/src/manager/context.ts +0 -0
- package/extensions/voice-call/src/manager/events.ts +0 -0
- package/extensions/voice-call/src/manager/lookup.ts +0 -0
- package/extensions/voice-call/src/manager/outbound.ts +0 -0
- package/extensions/voice-call/src/manager/state.ts +0 -0
- package/extensions/voice-call/src/manager/store.ts +0 -0
- package/extensions/voice-call/src/manager/timers.ts +0 -0
- package/extensions/voice-call/src/manager/twiml.ts +0 -0
- package/extensions/voice-call/src/manager.ts +0 -0
- package/extensions/voice-call/src/media-stream.ts +0 -0
- package/extensions/voice-call/src/providers/base.ts +0 -0
- package/extensions/voice-call/src/providers/mock.ts +0 -0
- package/extensions/voice-call/src/providers/plivo.ts +0 -0
- package/extensions/voice-call/src/providers/shared/guarded-json-api.ts +0 -0
- package/extensions/voice-call/src/providers/stt-openai-realtime.ts +0 -0
- package/extensions/voice-call/src/providers/telnyx.ts +0 -0
- package/extensions/voice-call/src/providers/tts-openai.ts +0 -0
- package/extensions/voice-call/src/providers/twilio/api.ts +0 -0
- package/extensions/voice-call/src/providers/twilio/webhook.ts +0 -0
- package/extensions/voice-call/src/providers/twilio.ts +0 -0
- package/extensions/voice-call/src/response-generator.ts +0 -0
- package/extensions/voice-call/src/runtime.ts +0 -0
- package/extensions/voice-call/src/telephony-audio.ts +0 -0
- package/extensions/voice-call/src/telephony-tts.ts +0 -0
- package/extensions/voice-call/src/tunnel.ts +0 -0
- package/extensions/voice-call/src/types.ts +0 -0
- package/extensions/voice-call/src/utils.ts +0 -0
- package/extensions/voice-call/src/voice-mapping.ts +0 -0
- package/extensions/voice-call/src/webhook/stale-call-reaper.ts +0 -0
- package/extensions/voice-call/src/webhook-security.ts +0 -0
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/README.md +0 -0
- package/extensions/zalo/fased.plugin.json +0 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalo/src/accounts.ts +0 -0
- package/extensions/zalo/src/actions.ts +0 -0
- package/extensions/zalo/src/api.ts +0 -0
- package/extensions/zalo/src/channel.ts +0 -0
- package/extensions/zalo/src/config-schema.ts +0 -0
- package/extensions/zalo/src/group-access.ts +0 -0
- package/extensions/zalo/src/monitor.ts +0 -0
- package/extensions/zalo/src/monitor.webhook.ts +0 -0
- package/extensions/zalo/src/onboarding.ts +0 -0
- package/extensions/zalo/src/probe.ts +0 -0
- package/extensions/zalo/src/proxy.ts +0 -0
- package/extensions/zalo/src/runtime.ts +0 -0
- package/extensions/zalo/src/send.ts +0 -0
- package/extensions/zalo/src/status-issues.ts +0 -0
- package/extensions/zalo/src/token.ts +0 -0
- package/extensions/zalo/src/types.ts +0 -0
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/README.md +0 -0
- package/extensions/zalouser/fased.plugin.json +0 -0
- package/extensions/zalouser/package.json +1 -1
- package/extensions/zalouser/src/accounts.ts +0 -0
- package/extensions/zalouser/src/channel.ts +0 -0
- package/extensions/zalouser/src/config-schema.ts +0 -0
- package/extensions/zalouser/src/monitor.ts +0 -0
- package/extensions/zalouser/src/onboarding.ts +0 -0
- package/extensions/zalouser/src/probe.ts +0 -0
- package/extensions/zalouser/src/runtime.ts +0 -0
- package/extensions/zalouser/src/send.ts +0 -0
- package/extensions/zalouser/src/status-issues.ts +0 -0
- package/extensions/zalouser/src/tool.ts +0 -0
- package/extensions/zalouser/src/types.ts +0 -0
- package/extensions/zalouser/src/zca.ts +0 -0
- package/package.json +8 -2
- package/scripts/fased-launcher-runtime.mjs +0 -0
- package/scripts/fased-managed-launcher.sh +60 -0
- package/scripts/fased-managed-service.sh +57 -0
- package/scripts/fased-managed-updater.mjs +879 -0
- package/scripts/install-managed-runtime.mjs +239 -0
- package/scripts/managed-runtime-layout.mjs +188 -0
- package/scripts/run-node.mjs +0 -0
- package/shared/sat-hash-v1.json +0 -0
- package/skills/1password/SKILL.md +0 -0
- package/skills/1password/references/cli-examples.md +0 -0
- package/skills/1password/references/get-started.md +0 -0
- package/skills/apple-notes/SKILL.md +0 -0
- package/skills/apple-reminders/SKILL.md +0 -0
- package/skills/bear-notes/SKILL.md +0 -0
- package/skills/blogwatcher/SKILL.md +0 -0
- package/skills/blucli/SKILL.md +0 -0
- package/skills/bluebubbles/SKILL.md +0 -0
- package/skills/camsnap/SKILL.md +0 -0
- package/skills/canvas/SKILL.md +0 -0
- package/skills/clawhub/SKILL.md +0 -0
- package/skills/coding-agent/SKILL.md +0 -0
- package/skills/diagram-maker/SKILL.md +0 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +0 -0
- package/skills/diagram-maker/references/svg-template.md +0 -0
- package/skills/discord/SKILL.md +0 -0
- package/skills/eightctl/SKILL.md +0 -0
- package/skills/food-order/SKILL.md +0 -0
- package/skills/gemini/SKILL.md +0 -0
- package/skills/gh-issues/SKILL.md +0 -0
- package/skills/gifgrep/SKILL.md +0 -0
- package/skills/github/SKILL.md +0 -0
- package/skills/gog/SKILL.md +0 -0
- package/skills/goplaces/SKILL.md +0 -0
- package/skills/healthcheck/SKILL.md +0 -0
- package/skills/himalaya/SKILL.md +0 -0
- package/skills/himalaya/references/configuration.md +0 -0
- package/skills/himalaya/references/message-composition.md +0 -0
- package/skills/imsg/SKILL.md +0 -0
- package/skills/mcporter/SKILL.md +0 -0
- package/skills/model-usage/SKILL.md +0 -0
- package/skills/model-usage/references/codexbar-cli.md +0 -0
- package/skills/model-usage/scripts/model_usage.py +0 -0
- package/skills/model-usage/scripts/test_model_usage.py +0 -0
- package/skills/nano-banana-pro/SKILL.md +0 -0
- package/skills/nano-pdf/SKILL.md +0 -0
- package/skills/node-connect/SKILL.md +0 -0
- package/skills/node-inspect-debugger/SKILL.md +0 -0
- package/skills/notion/SKILL.md +0 -0
- package/skills/obsidian/SKILL.md +0 -0
- package/skills/openai-image-gen/SKILL.md +0 -0
- package/skills/openai-image-gen/scripts/gen.py +0 -0
- package/skills/openai-image-gen/scripts/test_gen.py +0 -0
- package/skills/openai-whisper/SKILL.md +0 -0
- package/skills/openai-whisper-api/SKILL.md +0 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
- package/skills/opencode/SKILL.md +0 -0
- package/skills/openhue/SKILL.md +0 -0
- package/skills/oracle/SKILL.md +0 -0
- package/skills/ordercli/SKILL.md +0 -0
- package/skills/peekaboo/SKILL.md +0 -0
- package/skills/python-debugpy/SKILL.md +0 -0
- package/skills/sag/SKILL.md +0 -0
- package/skills/session-logs/SKILL.md +0 -0
- package/skills/sherpa-onnx-tts/SKILL.md +0 -0
- package/skills/skill-creator/SKILL.md +0 -0
- package/skills/skill-creator/license.txt +0 -0
- package/skills/skill-creator/scripts/init_skill.py +0 -0
- package/skills/skill-creator/scripts/package_skill.py +0 -0
- package/skills/skill-creator/scripts/quick_validate.py +0 -0
- package/skills/skill-creator/scripts/test_package_skill.py +0 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +0 -0
- package/skills/skill-workshop/SKILL.md +0 -0
- package/skills/slack/SKILL.md +0 -0
- package/skills/songsee/SKILL.md +0 -0
- package/skills/sonoscli/SKILL.md +0 -0
- package/skills/spotify-player/SKILL.md +0 -0
- package/skills/summarize/SKILL.md +0 -0
- package/skills/things-mac/SKILL.md +0 -0
- package/skills/tmux/SKILL.md +0 -0
- package/skills/trello/SKILL.md +0 -0
- package/skills/video-frames/SKILL.md +0 -0
- package/skills/video-frames/scripts/frame.sh +0 -0
- package/skills/voice-call/SKILL.md +0 -0
- package/skills/wacli/SKILL.md +0 -0
- package/skills/wallet-actions/SKILL.md +0 -0
- package/skills/weather/SKILL.md +0 -0
- package/skills/xurl/SKILL.md +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-CqF4Tc9n.js","./icons-D3-vEvih.js","./open-external-url-DwSiwMPl.js","./marketplace-order-evidence-DkR0ZRHa.js","./mining-commit-R-6nu87p.js","./chat-model-ref-Djkv93yn.js","./task-ledger-source-route-C-yTp0QU.js","./wallet-policy-C3ZS66Rl.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={"entry-loaded":10,"app-import-start":20,"app-imported":30,"custom-element-defined":40,connected:50,"first-updated":60,rendered:70,"boot-failed":100};function t(t,n){if(typeof window>`u`)return;let r=window.__FASED_CONTROL_UI_BOOT=window.__FASED_CONTROL_UI_BOOT??{},i=e[r.stage]??0;e[t]<i&&r.stage!==`boot-failed`||(r.stage=t,r.detail=n??``,r.updatedAt=Date.now(),typeof r.mark==`function`&&r.mark(t,n),typeof window.dispatchEvent==`function`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(`fased-control-ui-boot`,{detail:{stage:t,detail:n??``}})))}var n=`modulepreload`,r=function(e,t){return new URL(e,t).href},i={},a=function(e,t,a){let o=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}o=l(t.map(t=>{if(t=r(t,a),t=u(t),t in i)return;i[t]=!0;let o=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.href===t&&(!o||r.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:n,o||(s.as=`script`),s.crossOrigin=``,s.href=t,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,n)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})};function o(e){let n=e instanceof Error?e.stack??e.message:String(e);t(`boot-failed`,n||`Unknown dashboard boot error.`);let r=document.querySelector(`fased-app`);if(!r)return;r.innerHTML=``;let i=document.createElement(`style`);i.textContent=`
|
|
3
3
|
body {
|
|
4
4
|
margin: 0;
|
|
@@ -57,5 +57,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-CpgQGqe6.js","./
|
|
|
57
57
|
font-weight: 650;
|
|
58
58
|
cursor: pointer;
|
|
59
59
|
}
|
|
60
|
-
`;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-
|
|
61
|
-
//# sourceMappingURL=index-
|
|
60
|
+
`;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-CqF4Tc9n.js`).then(()=>t(`app-imported`)),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).catch(o);export{t as n,a as t};
|
|
61
|
+
//# sourceMappingURL=index-DYggPSfy.js.map
|
|
@@ -883,7 +883,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{A as r,C as i,D as
|
|
|
883
883
|
${n.label??X(a)}
|
|
884
884
|
</div>
|
|
885
885
|
<div class="providers-setup-card__sub">
|
|
886
|
-
${t?`
|
|
886
|
+
${t?`Built-in Ollama transport; no Fased plugin is required. Do not add /v1.`:i?`LM Studio local server. Discovery reads /api/v1/models.`:`OpenAI-compatible local servers: vLLM, SGLang, TGI, LocalAI, FastChat.`}
|
|
887
887
|
</div>
|
|
888
888
|
</div>
|
|
889
889
|
<input type="hidden" name="provider" value=${a} />
|
|
@@ -898,7 +898,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{A as r,C as i,D as
|
|
|
898
898
|
/>
|
|
899
899
|
</label>
|
|
900
900
|
<label class="providers-field">
|
|
901
|
-
Model ID
|
|
901
|
+
${t?`Model ID (for example qwen3:4b; ollama/ is optional)`:i?`Model ID (lmstudio/ prefix is optional)`:`Model ID (vllm/ prefix is optional)`}
|
|
902
902
|
<input
|
|
903
903
|
name="modelId"
|
|
904
904
|
type="text"
|
|
@@ -1141,4 +1141,4 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{A as r,C as i,D as
|
|
|
1141
1141
|
</section>
|
|
1142
1142
|
</section>
|
|
1143
1143
|
`}export{Ae as renderProviders};
|
|
1144
|
-
//# sourceMappingURL=providers-
|
|
1144
|
+
//# sourceMappingURL=providers-QMn4w2_f.js.map
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
15
15
|
<link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
|
|
16
16
|
<script data-fased-boot-watchdog src="./boot-watchdog.js" defer></script>
|
|
17
|
-
<script type="module" crossorigin src="./assets/index-
|
|
17
|
+
<script type="module" crossorigin src="./assets/index-DYggPSfy.js"></script>
|
|
18
18
|
<link rel="stylesheet" crossorigin href="./assets/index-RwVraC3c.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.1.
|
|
1
|
+
{"version":"0.1.60"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { resolveStateDir } from "../config/paths.js";
|
|
1
2
|
import { isBunRuntime, isNodeRuntime } from "./runtime-binary.js";
|
|
2
3
|
import { resolveManagedScriptPath } from "../commands/managed-up.js";
|
|
4
|
+
import os from "node:os";
|
|
3
5
|
import path from "node:path";
|
|
4
6
|
import fs from "node:fs/promises";
|
|
5
7
|
|
|
@@ -197,6 +199,38 @@ async function resolveCliProgramArguments(params) {
|
|
|
197
199
|
}
|
|
198
200
|
async function resolveGatewayProgramArguments(params) {
|
|
199
201
|
const startupMode = params.startupMode ?? "gateway";
|
|
202
|
+
const env = params.env ?? process.env;
|
|
203
|
+
const stateDir = resolveStateDir(env, os.homedir);
|
|
204
|
+
const manifestPath = env.FASED_MANAGED_INSTALL_MANIFEST || path.join(stateDir, "install.json");
|
|
205
|
+
try {
|
|
206
|
+
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
207
|
+
const launcher = typeof manifest.service?.launcher === "string" ? manifest.service.launcher : "";
|
|
208
|
+
const currentLink = typeof manifest.runtime?.currentLink === "string" ? manifest.runtime.currentLink : "";
|
|
209
|
+
if (manifest.schemaVersion === 1 && launcher && currentLink) {
|
|
210
|
+
await fs.access(launcher);
|
|
211
|
+
await fs.access(currentLink);
|
|
212
|
+
if (startupMode === "managed-up") {
|
|
213
|
+
return {
|
|
214
|
+
programArguments: [
|
|
215
|
+
"/bin/bash",
|
|
216
|
+
launcher,
|
|
217
|
+
"managed"
|
|
218
|
+
],
|
|
219
|
+
workingDirectory: currentLink
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
programArguments: [
|
|
224
|
+
"/bin/bash",
|
|
225
|
+
launcher,
|
|
226
|
+
"gateway",
|
|
227
|
+
"--port",
|
|
228
|
+
String(params.port)
|
|
229
|
+
],
|
|
230
|
+
workingDirectory: currentLink
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
} catch {}
|
|
200
234
|
if (startupMode === "managed-up") {
|
|
201
235
|
const scriptPath = resolveManagedScriptPath();
|
|
202
236
|
return {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -26,6 +26,15 @@ function isSuppressedControlReplyText(text) {
|
|
|
26
26
|
const normalized = text.trim();
|
|
27
27
|
return SUPPRESSED_CONTROL_REPLY_TOKENS.some((token) => isSilentReplyText(normalized, token));
|
|
28
28
|
}
|
|
29
|
+
function stripTrailingSuppressedControlReplyToken(text) {
|
|
30
|
+
const tokens = SUPPRESSED_CONTROL_REPLY_TOKENS.join("|");
|
|
31
|
+
const trailingToken = new RegExp(`(?:^|\\r?\\n)[\\t ]*(?:${tokens})[\\t ]*$`, "i");
|
|
32
|
+
const match = trailingToken.exec(text);
|
|
33
|
+
if (!match) {
|
|
34
|
+
return text;
|
|
35
|
+
}
|
|
36
|
+
return text.slice(0, match.index).trimEnd();
|
|
37
|
+
}
|
|
29
38
|
function isSuppressedControlReplyLeadFragment(text) {
|
|
30
39
|
const trimmed = text.trim();
|
|
31
40
|
const normalized = normalizeSuppressedControlReplyFragment(text);
|
|
@@ -51,4 +60,4 @@ function isSuppressedControlReplyLeadFragment(text) {
|
|
|
51
60
|
}
|
|
52
61
|
|
|
53
62
|
//#endregion
|
|
54
|
-
export { isSuppressedControlReplyLeadFragment, isSuppressedControlReplyText };
|
|
63
|
+
export { isSuppressedControlReplyLeadFragment, isSuppressedControlReplyText, stripTrailingSuppressedControlReplyToken };
|
|
@@ -7,7 +7,7 @@ import { DEFAULT_HEARTBEAT_ACK_MAX_CHARS, stripHeartbeatToken } from "../auto-re
|
|
|
7
7
|
import { getAgentRunContext } from "../infra/agent-events.js";
|
|
8
8
|
import { resolveHeartbeatVisibility } from "../infra/heartbeat-visibility.js";
|
|
9
9
|
import { formatForLog } from "./ws-log.js";
|
|
10
|
-
import { isSuppressedControlReplyLeadFragment, isSuppressedControlReplyText } from "./control-reply-text.js";
|
|
10
|
+
import { isSuppressedControlReplyLeadFragment, isSuppressedControlReplyText, stripTrailingSuppressedControlReplyToken } from "./control-reply-text.js";
|
|
11
11
|
import { broadcastSessionLifecycleEvent, broadcastSessionToolEvent } from "./server-session-events.js";
|
|
12
12
|
|
|
13
13
|
//#region src/gateway/server-chat.ts
|
|
@@ -204,7 +204,7 @@ function createToolEventRecipientRegistry() {
|
|
|
204
204
|
}
|
|
205
205
|
function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSession, agentRunSeq, chatRunState, resolveSessionKeyForRun, clearAgentRunContext, toolEventRecipients, sessionEventSubscribers }) {
|
|
206
206
|
const emitChatDelta = (sessionKey, clientRunId, sourceRunId, seq, text) => {
|
|
207
|
-
const cleaned = stripInlineDirectiveTagsForDisplay(text).text;
|
|
207
|
+
const cleaned = stripTrailingSuppressedControlReplyToken(stripInlineDirectiveTagsForDisplay(text).text);
|
|
208
208
|
if (!cleaned) {
|
|
209
209
|
return;
|
|
210
210
|
}
|
|
@@ -242,7 +242,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
242
242
|
nodeSendToSession(sessionKey, "chat", payload);
|
|
243
243
|
};
|
|
244
244
|
const emitChatFinal = (sessionKey, clientRunId, sourceRunId, seq, jobState, error) => {
|
|
245
|
-
const bufferedText = stripInlineDirectiveTagsForDisplay(chatRunState.buffers.get(clientRunId) ?? "").text.trim();
|
|
245
|
+
const bufferedText = stripTrailingSuppressedControlReplyToken(stripInlineDirectiveTagsForDisplay(chatRunState.buffers.get(clientRunId) ?? "").text).trim();
|
|
246
246
|
const normalizedHeartbeatText = normalizeHeartbeatChatFinalText({
|
|
247
247
|
runId: clientRunId,
|
|
248
248
|
sourceRunId,
|
|
@@ -13,6 +13,7 @@ import { listChatChannels } from "../../channels/registry.js";
|
|
|
13
13
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
14
14
|
import { formatValidationErrors, validateChannelsLogoutParams, validateChannelsRuntimeControlParams, validateChannelsStatusParams } from "../protocol/index.js";
|
|
15
15
|
import { getChannelActivity } from "../../infra/channel-activity.js";
|
|
16
|
+
import { getChannelDelivery } from "../../channels/delivery.js";
|
|
16
17
|
import { buildChannelUiCatalog, listChannelPluginCatalogEntries } from "../../channels/plugins/catalog.js";
|
|
17
18
|
import { resolveChannelDefaultAccountId } from "../../channels/plugins/helpers.js";
|
|
18
19
|
import { formatForLog } from "../ws-log.js";
|
|
@@ -31,13 +32,15 @@ function buildStatusChannelCatalog(params) {
|
|
|
31
32
|
resolved.set(meta.id, {
|
|
32
33
|
id: meta.id,
|
|
33
34
|
meta,
|
|
35
|
+
delivery: getChannelDelivery(meta.id),
|
|
34
36
|
catalogOnly: !pluginIds.has(meta.id)
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
for (const plugin of params.plugins) {
|
|
38
40
|
resolved.set(plugin.id, {
|
|
39
41
|
id: plugin.id,
|
|
40
|
-
meta: plugin.meta
|
|
42
|
+
meta: plugin.meta,
|
|
43
|
+
delivery: getChannelDelivery(plugin.id)
|
|
41
44
|
});
|
|
42
45
|
}
|
|
43
46
|
const workspaceDir = resolveAgentWorkspaceDir(params.cfg, resolveDefaultAgentId(params.cfg));
|
|
@@ -53,6 +56,7 @@ function buildStatusChannelCatalog(params) {
|
|
|
53
56
|
resolved.set(entry.id, {
|
|
54
57
|
id: entry.id,
|
|
55
58
|
meta: entry.meta,
|
|
59
|
+
delivery: entry.delivery,
|
|
56
60
|
catalogOnly: true,
|
|
57
61
|
install: entry.install
|
|
58
62
|
});
|
|
@@ -423,6 +427,7 @@ const channelsHandlers = {
|
|
|
423
427
|
running: false,
|
|
424
428
|
connected: false,
|
|
425
429
|
catalogOnly: true,
|
|
430
|
+
delivery: entry.delivery,
|
|
426
431
|
...pendingRestart ? { pendingRestart: true } : {},
|
|
427
432
|
install: catalogEntry?.install
|
|
428
433
|
};
|
|
@@ -438,7 +443,10 @@ const channelsHandlers = {
|
|
|
438
443
|
defaultAccountId,
|
|
439
444
|
snapshot: defaultAccount ?? { accountId: defaultAccountId }
|
|
440
445
|
}) : { configured: defaultAccount?.configured ?? false };
|
|
441
|
-
channelsMap[plugin.id] =
|
|
446
|
+
channelsMap[plugin.id] = {
|
|
447
|
+
...summary && typeof summary === "object" ? summary : {},
|
|
448
|
+
delivery: entry.delivery
|
|
449
|
+
};
|
|
442
450
|
accountsMap[plugin.id] = accounts;
|
|
443
451
|
defaultAccountIdMap[plugin.id] = defaultAccountId;
|
|
444
452
|
}
|
|
@@ -23,7 +23,7 @@ import { createReplyDispatcher } from "../../auto-reply/reply/reply-dispatcher.j
|
|
|
23
23
|
import { dispatchInboundMessage } from "../../auto-reply/dispatch.js";
|
|
24
24
|
import { createReplyPrefixOptions } from "../../channels/reply-prefix.js";
|
|
25
25
|
import { formatForLog } from "../ws-log.js";
|
|
26
|
-
import { isSuppressedControlReplyText } from "../control-reply-text.js";
|
|
26
|
+
import { isSuppressedControlReplyText, stripTrailingSuppressedControlReplyToken } from "../control-reply-text.js";
|
|
27
27
|
import { abortChatRunById, abortChatRunsForSessionKey, isChatStopCommandText, resolveChatRunExpiresAtMs } from "../chat-abort.js";
|
|
28
28
|
import { getMaxChatHistoryMessagesBytes } from "../server-constants.js";
|
|
29
29
|
import { parseMessageWithAttachments } from "../chat-attachments.js";
|
|
@@ -73,7 +73,7 @@ function truncateChatHistoryText(text) {
|
|
|
73
73
|
truncated: true
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
|
-
function sanitizeChatHistoryContentBlock(block) {
|
|
76
|
+
function sanitizeChatHistoryContentBlock(block, stripControlToken = false) {
|
|
77
77
|
if (!block || typeof block !== "object") {
|
|
78
78
|
return {
|
|
79
79
|
block,
|
|
@@ -83,10 +83,12 @@ function sanitizeChatHistoryContentBlock(block) {
|
|
|
83
83
|
const entry = { ...block };
|
|
84
84
|
let changed = false;
|
|
85
85
|
if (typeof entry.text === "string") {
|
|
86
|
-
const
|
|
86
|
+
const originalText = entry.text;
|
|
87
|
+
const controlSafe = stripControlToken ? stripTrailingSuppressedControlReplyToken(originalText) : originalText;
|
|
88
|
+
const stripped = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
87
89
|
const res = truncateChatHistoryText(stripped.text);
|
|
88
90
|
entry.text = res.text;
|
|
89
|
-
changed ||= stripped.changed || res.truncated;
|
|
91
|
+
changed ||= controlSafe !== originalText || stripped.changed || res.truncated;
|
|
90
92
|
}
|
|
91
93
|
if (typeof entry.partialJson === "string") {
|
|
92
94
|
const res = truncateChatHistoryText(entry.partialJson);
|
|
@@ -129,6 +131,7 @@ function sanitizeChatHistoryMessage(message) {
|
|
|
129
131
|
}
|
|
130
132
|
const entry = { ...message };
|
|
131
133
|
let changed = false;
|
|
134
|
+
const isAssistant = entry.role === "assistant";
|
|
132
135
|
if ("details" in entry) {
|
|
133
136
|
delete entry.details;
|
|
134
137
|
changed = true;
|
|
@@ -142,22 +145,26 @@ function sanitizeChatHistoryMessage(message) {
|
|
|
142
145
|
changed = true;
|
|
143
146
|
}
|
|
144
147
|
if (typeof entry.content === "string") {
|
|
145
|
-
const
|
|
148
|
+
const originalContent = entry.content;
|
|
149
|
+
const controlSafe = isAssistant ? stripTrailingSuppressedControlReplyToken(originalContent) : originalContent;
|
|
150
|
+
const stripped = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
146
151
|
const res = truncateChatHistoryText(stripped.text);
|
|
147
152
|
entry.content = res.text;
|
|
148
|
-
changed ||= stripped.changed || res.truncated;
|
|
153
|
+
changed ||= controlSafe !== originalContent || stripped.changed || res.truncated;
|
|
149
154
|
} else if (Array.isArray(entry.content)) {
|
|
150
|
-
const updated = entry.content.map((block) => sanitizeChatHistoryContentBlock(block));
|
|
155
|
+
const updated = entry.content.map((block) => sanitizeChatHistoryContentBlock(block, isAssistant));
|
|
151
156
|
if (updated.some((item) => item.changed)) {
|
|
152
157
|
entry.content = updated.map((item) => item.block);
|
|
153
158
|
changed = true;
|
|
154
159
|
}
|
|
155
160
|
}
|
|
156
161
|
if (typeof entry.text === "string") {
|
|
157
|
-
const
|
|
162
|
+
const originalText = entry.text;
|
|
163
|
+
const controlSafe = isAssistant ? stripTrailingSuppressedControlReplyToken(originalText) : originalText;
|
|
164
|
+
const stripped = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
158
165
|
const res = truncateChatHistoryText(stripped.text);
|
|
159
166
|
entry.text = res.text;
|
|
160
|
-
changed ||= stripped.changed || res.truncated;
|
|
167
|
+
changed ||= controlSafe !== originalText || stripped.changed || res.truncated;
|
|
161
168
|
}
|
|
162
169
|
return {
|
|
163
170
|
message: changed ? entry : message,
|
|
@@ -171,12 +178,12 @@ function sanitizeChatHistoryMessages(messages) {
|
|
|
171
178
|
let changed = false;
|
|
172
179
|
const next = [];
|
|
173
180
|
for (const message of messages) {
|
|
174
|
-
|
|
175
|
-
changed ||= res.changed;
|
|
176
|
-
if (shouldDropAssistantHistoryMessage(res.message)) {
|
|
181
|
+
if (shouldDropAssistantHistoryMessage(message)) {
|
|
177
182
|
changed = true;
|
|
178
183
|
continue;
|
|
179
184
|
}
|
|
185
|
+
const res = sanitizeChatHistoryMessage(message);
|
|
186
|
+
changed ||= res.changed;
|
|
180
187
|
next.push(res.message);
|
|
181
188
|
}
|
|
182
189
|
return changed ? next : messages;
|
|
@@ -11,10 +11,12 @@ import { loadConfig, writeConfigFile } from "../../config/io.js";
|
|
|
11
11
|
import "../../config/config.js";
|
|
12
12
|
import { resolveProfileUnusableUntilForDisplay } from "../../agents/auth-profiles/usage.js";
|
|
13
13
|
import "../../agents/auth-profiles.js";
|
|
14
|
+
import { ensureFasedModelsJson } from "../../agents/models-config.js";
|
|
14
15
|
import { deriveModelMetadata } from "../../agents/model-metadata.js";
|
|
15
16
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
16
17
|
import { formatValidationErrors, validateModelsAuthClearParams, validateModelsAuthConfigureParams, validateModelsAuthInteractiveStartParams, validateModelsAuthStatusParams, validateModelsAuthStoreParams, validateModelsCatalogStatusParams, validateModelsListParams } from "../protocol/index.js";
|
|
17
18
|
import { loadProviderExtensionCatalogIndex } from "../../agents/provider-extension-catalog-index.js";
|
|
19
|
+
import { markGatewayModelCatalogStaleForReload } from "../server-model-catalog.js";
|
|
18
20
|
import { buildModelCatalogStatus } from "../../agents/model-catalog-status.js";
|
|
19
21
|
import { DEFAULT_OAUTH_WARN_MS, buildAuthHealthSummary } from "../../agents/auth-health.js";
|
|
20
22
|
import { normalizeLegacyOnboardAuthChoice } from "../../commands/auth-choice-legacy.js";
|
|
@@ -684,6 +686,8 @@ const modelsHandlers = {
|
|
|
684
686
|
opts: plan.opts
|
|
685
687
|
});
|
|
686
688
|
await writeConfigFile(result.config);
|
|
689
|
+
await ensureFasedModelsJson(result.config, agentDir);
|
|
690
|
+
markGatewayModelCatalogStaleForReload();
|
|
687
691
|
respond(true, {
|
|
688
692
|
ok: true,
|
|
689
693
|
provider: plan.provider,
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { loadConfig } from "../../config/io.js";
|
|
1
|
+
import { loadConfig, writeConfigFile } from "../../config/io.js";
|
|
2
2
|
import "../../config/config.js";
|
|
3
3
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
4
4
|
import "../protocol/index.js";
|
|
5
|
-
import { buildCapabilityReadinessReport } from "../../capabilities/catalog.js";
|
|
5
|
+
import { buildCapabilityReadinessReport, loadCapabilityCatalog } from "../../capabilities/catalog.js";
|
|
6
|
+
import { installCapabilityComponent } from "../../capabilities/install.js";
|
|
7
|
+
import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
|
|
6
8
|
import { formatForLog } from "../ws-log.js";
|
|
7
9
|
import { runGmailSetup } from "../../hooks/gmail-ops.js";
|
|
8
10
|
import { listConfiguredWebSearchProviders, runWebSearch } from "../../web-search/runtime.js";
|
|
@@ -63,6 +65,49 @@ const servicesHandlers = {
|
|
|
63
65
|
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
|
|
64
66
|
}
|
|
65
67
|
},
|
|
68
|
+
"services.component.install": async ({ respond, params }) => {
|
|
69
|
+
try {
|
|
70
|
+
const id = stringParam(params, "id");
|
|
71
|
+
if (!id) {
|
|
72
|
+
respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "Component id is required"));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const result = await installCapabilityComponent({
|
|
76
|
+
id,
|
|
77
|
+
config: loadConfig()
|
|
78
|
+
});
|
|
79
|
+
await writeConfigFile(result.config);
|
|
80
|
+
respond(true, {
|
|
81
|
+
ok: true,
|
|
82
|
+
id,
|
|
83
|
+
pluginId: result.pluginId,
|
|
84
|
+
message: `Installed ${result.entry.label}.`,
|
|
85
|
+
restartRequired: result.entry.restartRequired !== false,
|
|
86
|
+
warnings: result.slotWarnings,
|
|
87
|
+
report: buildCapabilityReadinessReport({ config: result.config })
|
|
88
|
+
});
|
|
89
|
+
} catch (err) {
|
|
90
|
+
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"services.component.restart": async ({ respond, params }) => {
|
|
94
|
+
try {
|
|
95
|
+
const id = stringParam(params, "id");
|
|
96
|
+
const entry = id ? loadCapabilityCatalog().find((candidate) => candidate.id === id) : null;
|
|
97
|
+
if (!entry) {
|
|
98
|
+
respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "Known component id is required"));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const restart = scheduleGatewaySigusr1Restart({ reason: `services.component.restart:${entry.id}` });
|
|
102
|
+
respond(true, {
|
|
103
|
+
ok: true,
|
|
104
|
+
id: entry.id,
|
|
105
|
+
message: restart.coalesced ? `Gateway restart already pending for ${entry.label}.` : `Scheduled Gateway restart for ${entry.label}.`
|
|
106
|
+
});
|
|
107
|
+
} catch (err) {
|
|
108
|
+
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
|
|
109
|
+
}
|
|
110
|
+
},
|
|
66
111
|
"services.gmail.setup": async ({ respond, params }) => {
|
|
67
112
|
try {
|
|
68
113
|
const parsed = gmailSetupOptions(params);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { stripInlineDirectiveTagsForDisplay } from "../utils/directive-tags.js";
|
|
2
2
|
import { stripEnvelopeFromMessage } from "./chat-sanitize.js";
|
|
3
|
-
import { isSuppressedControlReplyText } from "./control-reply-text.js";
|
|
3
|
+
import { isSuppressedControlReplyText, stripTrailingSuppressedControlReplyToken } from "./control-reply-text.js";
|
|
4
4
|
|
|
5
5
|
//#region src/gateway/session-event-payloads.ts
|
|
6
6
|
const SESSION_EVENT_TEXT_MAX_CHARS = 12e3;
|
|
@@ -16,7 +16,7 @@ function truncateSessionEventText(text) {
|
|
|
16
16
|
truncated: true
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
function sanitizeSessionEventContentBlock(block) {
|
|
19
|
+
function sanitizeSessionEventContentBlock(block, stripControlToken = false) {
|
|
20
20
|
if (!block || typeof block !== "object" || Array.isArray(block)) {
|
|
21
21
|
return {
|
|
22
22
|
block,
|
|
@@ -26,10 +26,12 @@ function sanitizeSessionEventContentBlock(block) {
|
|
|
26
26
|
const entry = { ...block };
|
|
27
27
|
let changed = false;
|
|
28
28
|
if (typeof entry.text === "string") {
|
|
29
|
-
const
|
|
29
|
+
const originalText = entry.text;
|
|
30
|
+
const controlSafe = stripControlToken ? stripTrailingSuppressedControlReplyToken(originalText) : originalText;
|
|
31
|
+
const stripped = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
30
32
|
const truncated = truncateSessionEventText(stripped.text);
|
|
31
33
|
entry.text = truncated.text;
|
|
32
|
-
changed ||= stripped.changed || truncated.truncated;
|
|
34
|
+
changed ||= controlSafe !== originalText || stripped.changed || truncated.truncated;
|
|
33
35
|
}
|
|
34
36
|
if (typeof entry.content === "string") {
|
|
35
37
|
const stripped = stripInlineDirectiveTagsForDisplay(entry.content);
|
|
@@ -114,6 +116,11 @@ function projectSessionMessageForEvent(message) {
|
|
|
114
116
|
}
|
|
115
117
|
const entry = { ...stripped };
|
|
116
118
|
let changed = false;
|
|
119
|
+
const originalAssistantText = extractAssistantText(entry);
|
|
120
|
+
if (originalAssistantText !== undefined && isSuppressedControlReplyText(originalAssistantText)) {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
const isAssistant = entry.role === "assistant";
|
|
117
124
|
if ("details" in entry) {
|
|
118
125
|
delete entry.details;
|
|
119
126
|
changed = true;
|
|
@@ -127,22 +134,26 @@ function projectSessionMessageForEvent(message) {
|
|
|
127
134
|
changed = true;
|
|
128
135
|
}
|
|
129
136
|
if (typeof entry.content === "string") {
|
|
130
|
-
const
|
|
137
|
+
const originalContent = entry.content;
|
|
138
|
+
const controlSafe = isAssistant ? stripTrailingSuppressedControlReplyToken(originalContent) : originalContent;
|
|
139
|
+
const strippedContent = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
131
140
|
const truncated = truncateSessionEventText(strippedContent.text);
|
|
132
141
|
entry.content = truncated.text;
|
|
133
|
-
changed ||= strippedContent.changed || truncated.truncated;
|
|
142
|
+
changed ||= controlSafe !== originalContent || strippedContent.changed || truncated.truncated;
|
|
134
143
|
} else if (Array.isArray(entry.content)) {
|
|
135
|
-
const updated = entry.content.map((block) => sanitizeSessionEventContentBlock(block));
|
|
144
|
+
const updated = entry.content.map((block) => sanitizeSessionEventContentBlock(block, isAssistant));
|
|
136
145
|
if (updated.some((item) => item.changed)) {
|
|
137
146
|
entry.content = updated.map((item) => item.block);
|
|
138
147
|
changed = true;
|
|
139
148
|
}
|
|
140
149
|
}
|
|
141
150
|
if (typeof entry.text === "string") {
|
|
142
|
-
const
|
|
151
|
+
const originalText = entry.text;
|
|
152
|
+
const controlSafe = isAssistant ? stripTrailingSuppressedControlReplyToken(originalText) : originalText;
|
|
153
|
+
const strippedText = stripInlineDirectiveTagsForDisplay(controlSafe);
|
|
143
154
|
const truncated = truncateSessionEventText(strippedText.text);
|
|
144
155
|
entry.text = truncated.text;
|
|
145
|
-
changed ||= strippedText.changed || truncated.truncated;
|
|
156
|
+
changed ||= controlSafe !== originalText || strippedText.changed || truncated.truncated;
|
|
146
157
|
}
|
|
147
158
|
const projected = changed ? entry : stripped;
|
|
148
159
|
const assistantText = extractAssistantText(projected);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/infra/google-api-base-url.ts
|
|
2
|
+
const DEFAULT_GOOGLE_API_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
|
|
3
|
+
const GOOGLE_GENERATIVE_LANGUAGE_HOST = "generativelanguage.googleapis.com";
|
|
4
|
+
function trimTrailingSlashes(value) {
|
|
5
|
+
return value.replace(/\/+$/, "");
|
|
6
|
+
}
|
|
7
|
+
function isCanonicalGoogleApiOriginShorthand(value) {
|
|
8
|
+
return /^https:\/\/generativelanguage\.googleapis\.com\/?$/i.test(value);
|
|
9
|
+
}
|
|
10
|
+
function normalizeGoogleApiBaseUrl(baseUrl) {
|
|
11
|
+
const raw = trimTrailingSlashes(baseUrl?.trim() || DEFAULT_GOOGLE_API_BASE_URL);
|
|
12
|
+
try {
|
|
13
|
+
const url = new URL(raw);
|
|
14
|
+
url.hash = "";
|
|
15
|
+
url.search = "";
|
|
16
|
+
if (url.hostname.toLowerCase() === GOOGLE_GENERATIVE_LANGUAGE_HOST && trimTrailingSlashes(url.pathname || "") === "") {
|
|
17
|
+
url.pathname = "/v1beta";
|
|
18
|
+
}
|
|
19
|
+
return trimTrailingSlashes(url.toString());
|
|
20
|
+
} catch {
|
|
21
|
+
if (isCanonicalGoogleApiOriginShorthand(raw)) {
|
|
22
|
+
return DEFAULT_GOOGLE_API_BASE_URL;
|
|
23
|
+
}
|
|
24
|
+
return raw;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { normalizeGoogleApiBaseUrl };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { resolveStateDir } from "../config/paths.js";
|
|
2
|
+
import { resolveFasedAgentPackageRoot } from "./fased-root.js";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
import fs$1 from "node:fs/promises";
|
|
8
|
+
import { execFile } from "node:child_process";
|
|
9
|
+
|
|
10
|
+
//#region src/infra/managed-runtime-bootstrap.ts
|
|
11
|
+
const execFileAsync = promisify(execFile);
|
|
12
|
+
function resolveManagedPrefixForPackageRoot(packageRoot) {
|
|
13
|
+
const normalized = path.resolve(packageRoot);
|
|
14
|
+
const suffix = path.join("lib", "node_modules", "@fased", "fased");
|
|
15
|
+
if (!normalized.endsWith(suffix)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return normalized.slice(0, -suffix.length).replace(/[\\/]$/, "") || path.parse(normalized).root;
|
|
19
|
+
}
|
|
20
|
+
async function ensureManagedRuntimeBootstrap(params) {
|
|
21
|
+
const env = params.env ?? process.env;
|
|
22
|
+
if (process.platform !== "linux") {
|
|
23
|
+
return {
|
|
24
|
+
installed: false,
|
|
25
|
+
manifestPath: null,
|
|
26
|
+
updaterPath: null
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const profile = params.profile ?? (env.FASED_HOST_PROFILE === "hosting" || process.platform === "linux" && [
|
|
30
|
+
"/etc/systemd/system/fased-gateway.service",
|
|
31
|
+
"/usr/lib/systemd/system/fased-gateway.service",
|
|
32
|
+
"/lib/systemd/system/fased-gateway.service"
|
|
33
|
+
].some((candidate) => existsSync(candidate)) ? "hosting" : "local");
|
|
34
|
+
const stateDir = resolveStateDir(env, os.homedir);
|
|
35
|
+
const manifestPath = path.join(stateDir, "install.json");
|
|
36
|
+
const updaterPath = path.join(stateDir, "updater", "fased-managed-updater.mjs");
|
|
37
|
+
try {
|
|
38
|
+
const parsed = JSON.parse(await fs$1.readFile(manifestPath, "utf8"));
|
|
39
|
+
if (parsed.schemaVersion === 1) {
|
|
40
|
+
try {
|
|
41
|
+
await fs$1.access(updaterPath);
|
|
42
|
+
await fs$1.access(path.join(stateDir, "bin", "fased"));
|
|
43
|
+
await fs$1.access(path.join(stateDir, "bin", "fased-service"));
|
|
44
|
+
return {
|
|
45
|
+
installed: false,
|
|
46
|
+
manifestPath,
|
|
47
|
+
updaterPath
|
|
48
|
+
};
|
|
49
|
+
} catch {}
|
|
50
|
+
}
|
|
51
|
+
} catch {}
|
|
52
|
+
const packageRoot = params.packageRoot ?? await resolveFasedAgentPackageRoot({
|
|
53
|
+
moduleUrl: import.meta.url,
|
|
54
|
+
argv1: process.argv[1],
|
|
55
|
+
cwd: process.cwd()
|
|
56
|
+
});
|
|
57
|
+
if (!packageRoot) {
|
|
58
|
+
return {
|
|
59
|
+
installed: false,
|
|
60
|
+
manifestPath: null,
|
|
61
|
+
updaterPath: null
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const prefix = resolveManagedPrefixForPackageRoot(packageRoot);
|
|
65
|
+
if (!prefix) {
|
|
66
|
+
return {
|
|
67
|
+
installed: false,
|
|
68
|
+
manifestPath: null,
|
|
69
|
+
updaterPath: null
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const installer = path.join(packageRoot, "scripts", "install-managed-runtime.mjs");
|
|
73
|
+
try {
|
|
74
|
+
await fs$1.access(installer);
|
|
75
|
+
} catch {
|
|
76
|
+
return {
|
|
77
|
+
installed: false,
|
|
78
|
+
manifestPath: null,
|
|
79
|
+
updaterPath: null
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
await execFileAsync(process.execPath, [
|
|
83
|
+
installer,
|
|
84
|
+
"--package-root",
|
|
85
|
+
packageRoot,
|
|
86
|
+
"--state-dir",
|
|
87
|
+
stateDir,
|
|
88
|
+
"--prefix",
|
|
89
|
+
prefix,
|
|
90
|
+
"--profile",
|
|
91
|
+
profile
|
|
92
|
+
], {
|
|
93
|
+
env,
|
|
94
|
+
timeout: 12e4,
|
|
95
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
96
|
+
encoding: "utf8"
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
installed: true,
|
|
100
|
+
manifestPath,
|
|
101
|
+
updaterPath
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
//#endregion
|
|
106
|
+
export { ensureManagedRuntimeBootstrap };
|