synabun 2.0.7 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +1 -1
- package/hooks/claude-code/post-plan.mjs +6 -30
- package/hooks/claude-code/session-start.mjs +1 -4
- package/hooks/claude-code/shared.mjs +106 -72
- package/lib/package-processes.js +670 -0
- package/lib/runtime-dependencies.js +225 -0
- package/mcp-server/dist/services/browser-bench.d.ts +1 -1
- package/mcp-server/dist/services/browser-bench.d.ts.map +1 -1
- package/mcp-server/dist/services/browser-bench.js +1 -1
- package/mcp-server/dist/services/browser-bench.js.map +1 -1
- package/mcp-server/dist/services/categories.d.ts +35 -2
- package/mcp-server/dist/services/categories.d.ts.map +1 -1
- package/mcp-server/dist/services/categories.js +77 -33
- package/mcp-server/dist/services/categories.js.map +1 -1
- package/mcp-server/dist/services/desktop-bench.d.ts +7 -7
- package/mcp-server/dist/services/desktop-bench.d.ts.map +1 -1
- package/mcp-server/dist/services/desktop-bench.js +1 -1
- package/mcp-server/dist/services/desktop-bench.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +1 -1
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +1 -1
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/bluesky.js +1 -1
- package/mcp-server/dist/tools/bluesky.js.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.d.ts +1 -1
- package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.js +1 -1
- package/mcp-server/dist/tools/browser-advanced.js.map +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-batch.js +1 -1
- package/mcp-server/dist/tools/browser-batch.js.map +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.d.ts +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.js +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.js.map +1 -1
- package/mcp-server/dist/tools/browser-interact.d.ts +1 -1
- package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-interact.js +1 -1
- package/mcp-server/dist/tools/browser-interact.js.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.d.ts +1 -1
- package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.js +1 -1
- package/mcp-server/dist/tools/browser-navigate.js.map +1 -1
- package/mcp-server/dist/tools/browser-observe.d.ts +1 -1
- package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-observe.js +1 -1
- package/mcp-server/dist/tools/browser-observe.js.map +1 -1
- package/mcp-server/dist/tools/card-tools.d.ts +1 -1
- package/mcp-server/dist/tools/card-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/card-tools.js +1 -1
- package/mcp-server/dist/tools/card-tools.js.map +1 -1
- package/mcp-server/dist/tools/category.d.ts +1 -1
- package/mcp-server/dist/tools/category.d.ts.map +1 -1
- package/mcp-server/dist/tools/category.js +5 -1
- package/mcp-server/dist/tools/category.js.map +1 -1
- package/mcp-server/dist/tools/choice.d.ts +1 -1
- package/mcp-server/dist/tools/choice.d.ts.map +1 -1
- package/mcp-server/dist/tools/choice.js +1 -1
- package/mcp-server/dist/tools/choice.js.map +1 -1
- package/mcp-server/dist/tools/computer.d.ts +1 -1
- package/mcp-server/dist/tools/computer.d.ts.map +1 -1
- package/mcp-server/dist/tools/computer.js +1 -1
- package/mcp-server/dist/tools/computer.js.map +1 -1
- package/mcp-server/dist/tools/discord-channel.d.ts +1 -1
- package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-channel.js +1 -1
- package/mcp-server/dist/tools/discord-channel.js.map +1 -1
- package/mcp-server/dist/tools/discord-guild.d.ts +1 -1
- package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-guild.js +1 -1
- package/mcp-server/dist/tools/discord-guild.js.map +1 -1
- package/mcp-server/dist/tools/discord-member.d.ts +1 -1
- package/mcp-server/dist/tools/discord-member.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-member.js +1 -1
- package/mcp-server/dist/tools/discord-member.js.map +1 -1
- package/mcp-server/dist/tools/discord-message.d.ts +1 -1
- package/mcp-server/dist/tools/discord-message.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-message.js +1 -1
- package/mcp-server/dist/tools/discord-message.js.map +1 -1
- package/mcp-server/dist/tools/discord-onboarding.d.ts +1 -1
- package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-onboarding.js +1 -1
- package/mcp-server/dist/tools/discord-onboarding.js.map +1 -1
- package/mcp-server/dist/tools/discord-role.d.ts +1 -1
- package/mcp-server/dist/tools/discord-role.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-role.js +1 -1
- package/mcp-server/dist/tools/discord-role.js.map +1 -1
- package/mcp-server/dist/tools/discord-thread.d.ts +1 -1
- package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-thread.js +1 -1
- package/mcp-server/dist/tools/discord-thread.js.map +1 -1
- package/mcp-server/dist/tools/discord-webhook.d.ts +1 -1
- package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-webhook.js +1 -1
- package/mcp-server/dist/tools/discord-webhook.js.map +1 -1
- package/mcp-server/dist/tools/fb-groups.d.ts +1 -1
- package/mcp-server/dist/tools/fb-groups.d.ts.map +1 -1
- package/mcp-server/dist/tools/fb-groups.js +1 -1
- package/mcp-server/dist/tools/fb-groups.js.map +1 -1
- package/mcp-server/dist/tools/forget.d.ts +1 -1
- package/mcp-server/dist/tools/forget.d.ts.map +1 -1
- package/mcp-server/dist/tools/forget.js +1 -1
- package/mcp-server/dist/tools/forget.js.map +1 -1
- package/mcp-server/dist/tools/git-tools.d.ts +1 -1
- package/mcp-server/dist/tools/git-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/git-tools.js +1 -1
- package/mcp-server/dist/tools/git-tools.js.map +1 -1
- package/mcp-server/dist/tools/gsc/experience.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/experience.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/experience.js +1 -1
- package/mcp-server/dist/tools/gsc/experience.js.map +1 -1
- package/mcp-server/dist/tools/gsc/indexing.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/indexing.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/indexing.js +1 -1
- package/mcp-server/dist/tools/gsc/indexing.js.map +1 -1
- package/mcp-server/dist/tools/gsc/inspect.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/inspect.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/inspect.js +1 -1
- package/mcp-server/dist/tools/gsc/inspect.js.map +1 -1
- package/mcp-server/dist/tools/gsc/navigate.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/navigate.js +1 -1
- package/mcp-server/dist/tools/gsc/navigate.js.map +1 -1
- package/mcp-server/dist/tools/gsc/performance.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/performance.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/performance.js +1 -1
- package/mcp-server/dist/tools/gsc/performance.js.map +1 -1
- package/mcp-server/dist/tools/gsc/settings.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/settings.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/settings.js +1 -1
- package/mcp-server/dist/tools/gsc/settings.js.map +1 -1
- package/mcp-server/dist/tools/image-tools.d.ts +1 -1
- package/mcp-server/dist/tools/image-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/image-tools.js +1 -1
- package/mcp-server/dist/tools/image-tools.js.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -1
- package/mcp-server/dist/tools/loop.d.ts +1 -1
- package/mcp-server/dist/tools/loop.d.ts.map +1 -1
- package/mcp-server/dist/tools/loop.js +1 -1
- package/mcp-server/dist/tools/loop.js.map +1 -1
- package/mcp-server/dist/tools/memories.d.ts +1 -1
- package/mcp-server/dist/tools/memories.d.ts.map +1 -1
- package/mcp-server/dist/tools/memories.js +1 -1
- package/mcp-server/dist/tools/memories.js.map +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
- package/mcp-server/dist/tools/morelogin.js +1 -1
- package/mcp-server/dist/tools/morelogin.js.map +1 -1
- package/mcp-server/dist/tools/profile.d.ts +1 -1
- package/mcp-server/dist/tools/profile.d.ts.map +1 -1
- package/mcp-server/dist/tools/profile.js +1 -1
- package/mcp-server/dist/tools/profile.js.map +1 -1
- package/mcp-server/dist/tools/recall.d.ts +1 -1
- package/mcp-server/dist/tools/recall.d.ts.map +1 -1
- package/mcp-server/dist/tools/recall.js +1 -1
- package/mcp-server/dist/tools/recall.js.map +1 -1
- package/mcp-server/dist/tools/reflect.d.ts +1 -1
- package/mcp-server/dist/tools/reflect.d.ts.map +1 -1
- package/mcp-server/dist/tools/reflect.js +1 -1
- package/mcp-server/dist/tools/reflect.js.map +1 -1
- package/mcp-server/dist/tools/remember.d.ts +1 -1
- package/mcp-server/dist/tools/remember.d.ts.map +1 -1
- package/mcp-server/dist/tools/remember.js +13 -11
- package/mcp-server/dist/tools/remember.js.map +1 -1
- package/mcp-server/dist/tools/restore.d.ts +1 -1
- package/mcp-server/dist/tools/restore.d.ts.map +1 -1
- package/mcp-server/dist/tools/restore.js +1 -1
- package/mcp-server/dist/tools/restore.js.map +1 -1
- package/mcp-server/dist/tools/style-guide-tools.d.ts +1 -1
- package/mcp-server/dist/tools/style-guide-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/style-guide-tools.js +1 -1
- package/mcp-server/dist/tools/style-guide-tools.js.map +1 -1
- package/mcp-server/dist/tools/sync.d.ts +1 -1
- package/mcp-server/dist/tools/sync.d.ts.map +1 -1
- package/mcp-server/dist/tools/sync.js +1 -1
- package/mcp-server/dist/tools/sync.js.map +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.d.ts +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.js +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -1
- package/mcp-server/dist/tools/utils.d.ts +1 -1
- package/mcp-server/dist/tools/utils.d.ts.map +1 -1
- package/mcp-server/dist/tools/utils.js +1 -1
- package/mcp-server/dist/tools/utils.js.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.js +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +3 -3
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
- package/mcp-server/dist/tools/youtube/analytics.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/analytics.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/analytics.js +1 -1
- package/mcp-server/dist/tools/youtube/analytics.js.map +1 -1
- package/mcp-server/dist/tools/youtube/download.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/download.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/download.js +1 -1
- package/mcp-server/dist/tools/youtube/download.js.map +1 -1
- package/mcp-server/dist/tools/youtube/media.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/media.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/media.js +1 -1
- package/mcp-server/dist/tools/youtube/media.js.map +1 -1
- package/mcp-server/dist/tools/youtube/metadata.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/metadata.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/metadata.js +1 -1
- package/mcp-server/dist/tools/youtube/metadata.js.map +1 -1
- package/mcp-server/dist/tools/youtube/navigate.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/navigate.js +1 -1
- package/mcp-server/dist/tools/youtube/navigate.js.map +1 -1
- package/mcp-server/dist/tools/youtube/playlist.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/playlist.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/playlist.js +1 -1
- package/mcp-server/dist/tools/youtube/playlist.js.map +1 -1
- package/mcp-server/dist/tools/youtube/schedule.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/schedule.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/schedule.js +1 -1
- package/mcp-server/dist/tools/youtube/schedule.js.map +1 -1
- package/mcp-server/dist/tools/youtube/source.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/source.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/source.js +1 -1
- package/mcp-server/dist/tools/youtube/source.js.map +1 -1
- package/mcp-server/dist/tools/youtube/upload.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/upload.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/upload.js +4 -9
- package/mcp-server/dist/tools/youtube/upload.js.map +1 -1
- package/mcp-server/dist/tui.js +16 -4
- package/mcp-server/dist/tui.js.map +1 -1
- package/mcp-server/package-lock.json +3 -3
- package/mcp-server/package.json +3 -3
- package/mcp-server/src/services/browser-bench.ts +1 -1
- package/mcp-server/src/services/categories.ts +77 -32
- package/mcp-server/src/services/desktop-bench.ts +1 -1
- package/mcp-server/src/tools/agents.ts +1 -1
- package/mcp-server/src/tools/bluesky.ts +1 -1
- package/mcp-server/src/tools/browser-advanced.ts +1 -1
- package/mcp-server/src/tools/browser-batch.ts +1 -1
- package/mcp-server/src/tools/browser-cheatsheet.ts +1 -1
- package/mcp-server/src/tools/browser-interact.ts +1 -1
- package/mcp-server/src/tools/browser-navigate.ts +1 -1
- package/mcp-server/src/tools/browser-observe.ts +1 -1
- package/mcp-server/src/tools/card-tools.ts +1 -1
- package/mcp-server/src/tools/category.ts +6 -1
- package/mcp-server/src/tools/choice.ts +1 -1
- package/mcp-server/src/tools/computer.ts +1 -1
- package/mcp-server/src/tools/discord-channel.ts +1 -1
- package/mcp-server/src/tools/discord-guild.ts +1 -1
- package/mcp-server/src/tools/discord-member.ts +1 -1
- package/mcp-server/src/tools/discord-message.ts +1 -1
- package/mcp-server/src/tools/discord-onboarding.ts +1 -1
- package/mcp-server/src/tools/discord-role.ts +1 -1
- package/mcp-server/src/tools/discord-thread.ts +1 -1
- package/mcp-server/src/tools/discord-webhook.ts +1 -1
- package/mcp-server/src/tools/fb-groups.ts +1 -1
- package/mcp-server/src/tools/forget.ts +1 -1
- package/mcp-server/src/tools/git-tools.ts +1 -1
- package/mcp-server/src/tools/gsc/experience.ts +1 -1
- package/mcp-server/src/tools/gsc/indexing.ts +1 -1
- package/mcp-server/src/tools/gsc/inspect.ts +1 -1
- package/mcp-server/src/tools/gsc/navigate.ts +1 -1
- package/mcp-server/src/tools/gsc/performance.ts +1 -1
- package/mcp-server/src/tools/gsc/settings.ts +1 -1
- package/mcp-server/src/tools/image-tools.ts +1 -1
- package/mcp-server/src/tools/leonardo-browser-tools.ts +1 -1
- package/mcp-server/src/tools/loop.ts +1 -1
- package/mcp-server/src/tools/memories.ts +1 -1
- package/mcp-server/src/tools/morelogin.ts +1 -1
- package/mcp-server/src/tools/profile.ts +1 -1
- package/mcp-server/src/tools/recall.ts +1 -1
- package/mcp-server/src/tools/reflect.ts +1 -1
- package/mcp-server/src/tools/remember.ts +13 -12
- package/mcp-server/src/tools/restore.ts +1 -1
- package/mcp-server/src/tools/style-guide-tools.ts +1 -1
- package/mcp-server/src/tools/sync.ts +1 -1
- package/mcp-server/src/tools/tictactoe-tools.ts +1 -1
- package/mcp-server/src/tools/utils.ts +1 -1
- package/mcp-server/src/tools/whatsapp-send-file.ts +1 -1
- package/mcp-server/src/tools/whiteboard-tools.ts +1 -1
- package/mcp-server/src/tools/youtube/analytics.ts +1 -1
- package/mcp-server/src/tools/youtube/download.ts +1 -1
- package/mcp-server/src/tools/youtube/media.ts +1 -1
- package/mcp-server/src/tools/youtube/metadata.ts +1 -1
- package/mcp-server/src/tools/youtube/navigate.ts +1 -1
- package/mcp-server/src/tools/youtube/playlist.ts +1 -1
- package/mcp-server/src/tools/youtube/schedule.ts +1 -1
- package/mcp-server/src/tools/youtube/source.ts +1 -1
- package/mcp-server/src/tools/youtube/upload.ts +4 -12
- package/mcp-server/src/tui.ts +22 -9
- package/neural-interface/i18n/en.json +18 -0
- package/neural-interface/i18n/pt-BR.json +18 -0
- package/neural-interface/lib/agent-sandbox-elevation.js +102 -0
- package/neural-interface/lib/agent-sandbox-setting.js +57 -0
- package/neural-interface/lib/assistant-api.js +19 -0
- package/neural-interface/lib/assistant-route-gate-codex.js +3 -1
- package/neural-interface/lib/assistant-runtime.js +5 -1
- package/neural-interface/lib/codex-account-auth.js +4 -2
- package/neural-interface/lib/codex-accounts.js +14 -1
- package/neural-interface/lib/codex-settings-schema.js +5 -3
- package/neural-interface/lib/exec-loop-command.js +3 -1
- package/neural-interface/lib/install-details.js +23 -5
- package/neural-interface/lib/native-loop-providers.js +6 -1
- package/neural-interface/lib/provider-panel-terminal-auth.js +3 -2
- package/neural-interface/lib/session-indexer.js +3 -1
- package/neural-interface/lib/session-title-generator.js +2 -0
- package/neural-interface/package-lock.json +2 -2
- package/neural-interface/package.json +1 -1
- package/neural-interface/public/shared/account-menu.js +4 -1
- package/neural-interface/public/shared/account-usage.js +62 -2
- package/neural-interface/public/shared/account-view.js +2 -1
- package/neural-interface/public/shared/assistant/asst-account-menu.js +298 -0
- package/neural-interface/public/shared/assistant/asst-api.js +7 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +232 -75
- package/neural-interface/public/shared/assistant/asst-menu.js +204 -77
- package/neural-interface/public/shared/assistant/asst-model-chip.js +135 -0
- package/neural-interface/public/shared/assistant/asst-panel.js +39 -2
- package/neural-interface/public/shared/assistant/asst-styles.js +66 -17
- package/neural-interface/public/shared/cdx/cdx-panel.js +1 -1
- package/neural-interface/public/shared/cdx/cdx-styles.js +45 -5
- package/neural-interface/public/shared/cdx/cdx-tabs.js +3 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +4 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +51 -2
- package/neural-interface/public/shared/showcase-privacy.js +2 -1
- package/neural-interface/public/shared/styles.css +3 -1
- package/neural-interface/public/shared/ui-claude-panel.js +50 -4
- package/neural-interface/public/shared/ui-explorer.js +2 -0
- package/neural-interface/public/shared/ui-sync.js +2 -0
- package/neural-interface/public/shared/ui-update.js +4 -2
- package/neural-interface/scripts/rebuild-pty.js +14 -2
- package/neural-interface/server.js +180 -86
- package/npm-shrinkwrap.json +4424 -0
- package/package.json +54 -2
- package/postinstall.js +61 -47
- package/preuninstall.js +8 -35
- package/setup.js +76 -44
- package/skills/synabun/modules/idea.md +1 -1
- package/skills/synabun/modules/schedule.md +1 -1
- package/updater.cmd +2 -2
- package/updater.mjs +97 -3
package/updater.mjs
CHANGED
|
@@ -19,10 +19,17 @@
|
|
|
19
19
|
// Keeping the updater outside the installed package is intentional. On Windows,
|
|
20
20
|
// running from node_modules/synabun can hold locks on the directory npm needs to
|
|
21
21
|
// rename during a global update.
|
|
22
|
+
//
|
|
23
|
+
// On Windows the processes that still run from the package folder after the
|
|
24
|
+
// server is gone (the MCP servers AI clients started, their embedding workers)
|
|
25
|
+
// are stopped before npm runs, and again before each retry when npm still finds
|
|
26
|
+
// the folder in use (lib/package-processes.js, staged in lib/ next to this file).
|
|
22
27
|
|
|
23
28
|
import { spawn, spawnSync } from 'node:child_process';
|
|
24
29
|
import { closeSync, fstatSync, openSync, readFileSync, readSync, writeFileSync } from 'node:fs';
|
|
30
|
+
import { tmpdir } from 'node:os';
|
|
25
31
|
import { dirname, join } from 'node:path';
|
|
32
|
+
import { fileURLToPath } from 'node:url';
|
|
26
33
|
|
|
27
34
|
const args = parseArgs(process.argv.slice(2));
|
|
28
35
|
const payload = loadPayload(args.payload);
|
|
@@ -99,26 +106,87 @@ try {
|
|
|
99
106
|
console.log(' Cleanup complete.\n');
|
|
100
107
|
}
|
|
101
108
|
|
|
109
|
+
// Windows: what the server did not start (MCP servers of AI clients) still runs from the folder npm replaces.
|
|
110
|
+
const processStop = isWin ? await loadProcessStop() : null;
|
|
111
|
+
// Every form of the folder the server knew (as it resolved it, as it was started), else this file's own folder.
|
|
112
|
+
const knownRoots = [...(Array.isArray(payload.packageRoots) ? payload.packageRoots : []), payload.packageRoot].filter(Boolean);
|
|
113
|
+
const stopRoots = processStop ? processStop.packageRootsToStop(knownRoots.length ? knownRoots : ownPackageFolder()) : [];
|
|
114
|
+
const stoppedPids = new Set();
|
|
115
|
+
// One limit for the whole stop step, every pass included, counted only while a pass runs (never npm's time):
|
|
116
|
+
// generous, never endless.
|
|
117
|
+
const stopLimitMs = processStop?.STOP_DEADLINE_MS ?? 180_000;
|
|
118
|
+
const stopBudget = processStop?.createStopBudget({ totalMs: stopLimitMs });
|
|
119
|
+
const stopOwnProcesses = async () => {
|
|
120
|
+
console.log(`Stopping SynaBun processes that still run from ${stopRoots[0]}...`);
|
|
121
|
+
const result = await stopBudget.run(deadline => processStop.stopPackageProcesses({ roots: stopRoots, selfPid: process.pid, deadline, log: line => console.log(line) }));
|
|
122
|
+
for (const target of result.stopped) stoppedPids.add(target.pid);
|
|
123
|
+
if (result.timedOut) console.warn(` Stopping SynaBun's processes reached its ${Math.round(stopLimitMs / 60_000)}-minute limit${result.remaining.length ? `; still running: ${result.remaining.map(target => `PID ${target.pid}`).join(', ')}` : ''}. Going on without stopping more.\n`);
|
|
124
|
+
else if (!result.listed) console.warn(' The running processes could not be listed (PowerShell). Continuing.\n');
|
|
125
|
+
else if (result.remaining.length) console.warn(` Still running after ${processStop.STOP_WAIT_MS / 1000}s: ${result.remaining.map(target => `PID ${target.pid}`).join(', ')}\n`);
|
|
126
|
+
else console.log(result.stopped.length ? ` Stopped ${result.stopped.length}.\n` : ' None running.\n');
|
|
127
|
+
return result;
|
|
128
|
+
};
|
|
129
|
+
if (processStop && stopRoots.length) await stopOwnProcesses();
|
|
130
|
+
else if (processStop) console.log('No npm-installed SynaBun folder was named, so no SynaBun process started by an AI client was stopped.\n');
|
|
131
|
+
|
|
102
132
|
console.log(`Running: ${displayCommand}\n`);
|
|
103
133
|
console.log(HR);
|
|
104
|
-
|
|
134
|
+
// The spec is always a registry one (sanitizeInstallSpec), so npm reads SynaBun's npm-shrinkwrap.json, which keeps
|
|
135
|
+
// the dependencies' install scripts off for this install. Two settings stay as a second guard for the two scripts
|
|
136
|
+
// that would do work SynaBun never uses: onnxruntime-node downloads its CUDA libraries on Linux x64 (several
|
|
137
|
+
// hundred MB), and sharp tries to compile itself when a system libvips is installed. A value the user set wins.
|
|
138
|
+
// On Windows npm's debug log goes to a folder of this update (in the environment, never on cmd.exe's command
|
|
139
|
+
// line), so a failure can name it and say whether the folder was in use.
|
|
140
|
+
const npmLogsDir = stopRoots.length ? (process.env.npm_config_logs_dir || join(args.payload ? dirname(args.payload) : tmpdir(), 'npm-logs')) : null;
|
|
141
|
+
const runNpm = () => spawnSync(NPM_BIN, ['i', '-g', installSpec], {
|
|
105
142
|
cwd: safeCwd,
|
|
106
143
|
stdio: 'inherit',
|
|
107
144
|
shell: isWin,
|
|
145
|
+
env: {
|
|
146
|
+
...process.env,
|
|
147
|
+
ONNXRUNTIME_NODE_INSTALL_CUDA: process.env.ONNXRUNTIME_NODE_INSTALL_CUDA || 'skip',
|
|
148
|
+
SHARP_IGNORE_GLOBAL_LIBVIPS: process.env.SHARP_IGNORE_GLOBAL_LIBVIPS || '1',
|
|
149
|
+
...(npmLogsDir ? { npm_config_logs_dir: npmLogsDir } : {}),
|
|
150
|
+
},
|
|
108
151
|
});
|
|
152
|
+
let installRes;
|
|
153
|
+
let installOutcome = null;
|
|
154
|
+
if (processStop && stopRoots.length) {
|
|
155
|
+
installOutcome = await processStop.installWithLockRetries({
|
|
156
|
+
install: (attempt) => {
|
|
157
|
+
if (attempt > 1) console.log(`${HR}\n\nRunning again: ${displayCommand}\n\n${HR}`);
|
|
158
|
+
const startedAt = Date.now();
|
|
159
|
+
installRes = runNpm();
|
|
160
|
+
return processStop.npmOutcome(installRes, { logsDir: npmLogsDir, startedAt });
|
|
161
|
+
},
|
|
162
|
+
stop: () => stopOwnProcesses(),
|
|
163
|
+
log: line => console.log(line),
|
|
164
|
+
});
|
|
165
|
+
} else {
|
|
166
|
+
installRes = runNpm();
|
|
167
|
+
}
|
|
109
168
|
console.log(HR);
|
|
110
169
|
|
|
111
170
|
if (installRes.error) throw installRes.error;
|
|
112
171
|
if (installRes.status !== 0) {
|
|
113
|
-
|
|
172
|
+
if (installOutcome?.locked) {
|
|
173
|
+
reportLockedFolder(installOutcome);
|
|
174
|
+
} else {
|
|
175
|
+
console.error(`\nnpm update command failed with exit code ${installRes.status}.\n`);
|
|
176
|
+
if (installOutcome?.logFile) console.error(`npm log: ${installOutcome.logFile}\n`);
|
|
177
|
+
}
|
|
114
178
|
markHandoff('failed', { failedAt: new Date().toISOString(), reason: `npm exited with code ${installRes.status}` });
|
|
115
|
-
printFixTips(displayCommand);
|
|
179
|
+
if (!installOutcome?.locked) printFixTips(displayCommand);
|
|
116
180
|
await maybeHoldOpen(noHold);
|
|
117
181
|
process.exit(installRes.status || 1);
|
|
118
182
|
}
|
|
119
183
|
|
|
120
184
|
console.log(`\nSynaBun update installed.\n`);
|
|
121
185
|
markHandoff('installed', { installedAt: new Date().toISOString() });
|
|
186
|
+
if (stoppedPids.size) {
|
|
187
|
+
console.log(`Before installing, the updater stopped ${stoppedPids.size} SynaBun process${stoppedPids.size === 1 ? '' : 'es'} that ran from the old version, such as the SynaBun MCP servers of your AI clients.`);
|
|
188
|
+
console.log('Reconnect SynaBun in each AI client that uses it, or restart its SynaBun MCP server (in Claude Code: /mcp).\n');
|
|
189
|
+
}
|
|
122
190
|
|
|
123
191
|
if (autoRestart) {
|
|
124
192
|
console.log('Relaunching SynaBun...\n');
|
|
@@ -145,6 +213,32 @@ try {
|
|
|
145
213
|
process.exit(1);
|
|
146
214
|
}
|
|
147
215
|
|
|
216
|
+
// The Windows stop step (lib/package-processes.js), or null: an updater staged by
|
|
217
|
+
// a server from before it has no lib/ next to it, and updates as it always did.
|
|
218
|
+
async function loadProcessStop() {
|
|
219
|
+
try {
|
|
220
|
+
return await import('./lib/package-processes.js');
|
|
221
|
+
} catch (error) {
|
|
222
|
+
console.warn(`The step that stops SynaBun's MCP servers could not be loaded (${error.message}). Continuing without it.\n`);
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Where this file is: the package folder itself when the updater runs from the
|
|
228
|
+
// installed package (the legacy invocation), never a staged copy's folder.
|
|
229
|
+
function ownPackageFolder() {
|
|
230
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// npm still found the package folder in use after every stop and retry.
|
|
234
|
+
function reportLockedFolder(outcome) {
|
|
235
|
+
console.error(`\nnpm could not replace the SynaBun folder (${outcome.lockCode}): something still runs from it. Tried ${outcome.attempts} time${outcome.attempts === 1 ? '' : 's'}${outcome.timedOut ? ', and stopping SynaBun\'s processes reached its time limit' : ''}.`);
|
|
236
|
+
console.error(` npm exit code: ${outcome.status ?? outcome.signal ?? '?'}`);
|
|
237
|
+
console.error(` npm log: ${outcome.logFile || 'see the path npm printed above'}`);
|
|
238
|
+
console.error('\nClose every AI client that uses SynaBun (Claude Code, Codex, Cursor, OpenCode, ...) and every SynaBun window or terminal, then run:');
|
|
239
|
+
console.error(` ${displayCommand}\n`);
|
|
240
|
+
}
|
|
241
|
+
|
|
148
242
|
// The handoff marker tells the launcher what this update did. `installed` lets
|
|
149
243
|
// it reuse the pre-update snapshot for exactly this version; `failed` closes a
|
|
150
244
|
// `prepared` marker so it is never mistaken for an update that happened.
|