synabun 2.1.0 → 2.2.1
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 +139 -0
- package/README.md +1 -1
- package/docs/whatsapp.md +11 -11
- package/lib/client-config-repair.js +13 -9
- package/lib/external-tools.js +6 -5
- package/lib/update-snapshot.js +77 -3
- package/lib/virustotal.mjs +12 -1
- package/mcp-server/dist/index.js +1 -1
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts.map +1 -1
- package/mcp-server/dist/services/budget-judgments.js +5 -3
- package/mcp-server/dist/services/budget-judgments.js.map +1 -1
- package/mcp-server/dist/services/identity.d.ts +2 -2
- package/mcp-server/dist/services/identity.js +2 -2
- package/mcp-server/dist/services/memory-sessions.d.ts +1 -1
- package/mcp-server/dist/services/memory-sessions.d.ts.map +1 -1
- package/mcp-server/dist/services/memory-sessions.js +28 -2
- package/mcp-server/dist/services/memory-sessions.js.map +1 -1
- package/mcp-server/dist/services/neural-interface.d.ts +2 -1
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
- package/mcp-server/dist/services/server-instructions.js +2 -1
- package/mcp-server/dist/services/server-instructions.js.map +1 -1
- package/mcp-server/dist/services/tool-catalog.js +1 -1
- package/mcp-server/dist/services/tool-catalog.js.map +1 -1
- package/mcp-server/dist/services/tool-list.d.ts +1 -1
- package/mcp-server/dist/services/tool-list.d.ts.map +1 -1
- package/mcp-server/dist/services/tool-runtime.d.ts +2 -2
- package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -1
- package/mcp-server/dist/services/tool-runtime.js +1 -1
- package/mcp-server/dist/services/tool-runtime.js.map +1 -1
- package/mcp-server/dist/services/typesafe-config.js +1 -1
- package/mcp-server/dist/services/typesafe-config.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +8 -8
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +10 -9
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/choice.d.ts +6 -0
- package/mcp-server/dist/tools/choice.d.ts.map +1 -1
- package/mcp-server/dist/tools/choice.js +18 -13
- package/mcp-server/dist/tools/choice.js.map +1 -1
- package/mcp-server/dist/tools/git-tools.js +2 -2
- package/mcp-server/dist/tools/git-tools.js.map +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
- package/mcp-server/dist/tools/morelogin.js +9 -6
- package/mcp-server/dist/tools/morelogin.js.map +1 -1
- package/mcp-server/dist/tools/skill-tools.d.ts +8 -8
- package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/skill-tools.js +11 -8
- package/mcp-server/dist/tools/skill-tools.js.map +1 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/mcp-server/src/index.ts +1 -1
- package/mcp-server/src/services/budget-judgments.ts +5 -3
- package/mcp-server/src/services/identity.ts +2 -2
- package/mcp-server/src/services/memory-sessions.ts +24 -3
- package/mcp-server/src/services/neural-interface.ts +2 -1
- package/mcp-server/src/services/server-instructions.ts +2 -1
- package/mcp-server/src/services/tool-catalog.ts +1 -1
- package/mcp-server/src/services/tool-list.ts +1 -1
- package/mcp-server/src/services/tool-runtime.ts +2 -2
- package/mcp-server/src/services/typesafe-config.ts +1 -1
- package/mcp-server/src/tools/agents.ts +10 -9
- package/mcp-server/src/tools/choice.ts +17 -12
- package/mcp-server/src/tools/git-tools.ts +2 -2
- package/mcp-server/src/tools/morelogin.ts +6 -4
- package/mcp-server/src/tools/skill-tools.ts +11 -8
- package/neural-interface/i18n/en.json +504 -39
- package/neural-interface/i18n/pt-BR.json +504 -39
- package/neural-interface/lib/agent-sandbox-elevation.js +6 -0
- package/neural-interface/lib/antigravity/acp-client-host.js +554 -0
- package/neural-interface/lib/antigravity/acp-connection.js +299 -0
- package/neural-interface/lib/antigravity/bypass.js +100 -0
- package/neural-interface/lib/antigravity/catalog.js +273 -0
- package/neural-interface/lib/antigravity/home.js +260 -0
- package/neural-interface/lib/antigravity/migrate-gemini.js +139 -0
- package/neural-interface/lib/antigravity/panel-bridge.js +1058 -0
- package/neural-interface/lib/antigravity/policy-hook.mjs +78 -0
- package/neural-interface/lib/antigravity/policy.js +74 -0
- package/neural-interface/lib/antigravity/tool-call.js +178 -0
- package/neural-interface/lib/antigravity/transcripts.js +252 -0
- package/neural-interface/lib/antigravity/usage.js +43 -0
- package/neural-interface/lib/assistant-api.js +1 -0
- package/neural-interface/lib/assistant-brains/antigravity.js +423 -0
- package/neural-interface/lib/assistant-brains/codex.js +6 -1
- package/neural-interface/lib/assistant-budget-planner.js +7 -3
- package/neural-interface/lib/assistant-budget-split.js +42 -15
- package/neural-interface/lib/assistant-catalog.js +76 -9
- package/neural-interface/lib/assistant-config.js +6 -3
- package/neural-interface/lib/assistant-dispatch.js +211 -50
- package/neural-interface/lib/assistant-envelope.js +153 -1
- package/neural-interface/lib/assistant-evidence.js +80 -0
- package/neural-interface/lib/assistant-hidden-models.js +7 -5
- package/neural-interface/lib/assistant-persona.js +16 -11
- package/neural-interface/lib/assistant-plan-permissions.js +15 -0
- package/neural-interface/lib/assistant-router.js +237 -35
- package/neural-interface/lib/assistant-runtime.js +158 -12
- package/neural-interface/lib/assistant-task-prompt.js +10 -8
- package/neural-interface/lib/assistant-tools.js +2 -2
- package/neural-interface/lib/assistant-usage.js +29 -0
- package/neural-interface/lib/backup-service.js +6 -1
- package/neural-interface/lib/browser-guard-cdp.js +5 -4
- package/neural-interface/lib/browser-network-guard.js +274 -82
- package/neural-interface/lib/browser-tool-policy.js +12 -7
- package/neural-interface/lib/claude-agent-bridge.js +7 -0
- package/neural-interface/lib/claude-history-cache.js +210 -0
- package/neural-interface/lib/claude-model-catalog.js +5 -1
- package/neural-interface/lib/cli-install-api.js +1 -1
- package/neural-interface/lib/cli-install.js +160 -31
- package/neural-interface/lib/cli-resolver.js +9 -2
- package/neural-interface/lib/cli-update-planner.js +25 -15
- package/neural-interface/lib/codex-rollout-reader.js +52 -0
- package/neural-interface/lib/codex-worker-app-server.js +25 -6
- package/neural-interface/lib/editor-git-api.js +3 -20
- package/neural-interface/lib/exec-loop-command.js +9 -2
- package/neural-interface/lib/file-explorer-api.js +74 -40
- package/neural-interface/lib/file-explorer-watch.js +9 -3
- package/neural-interface/lib/git-bash/install.js +52 -6
- package/neural-interface/lib/git-bash/manager.js +59 -17
- package/neural-interface/lib/git-bash/pins.js +12 -0
- package/neural-interface/lib/git-read.js +2 -2
- package/neural-interface/lib/git-status-runner.js +390 -0
- package/neural-interface/lib/git-status-watchdog.js +40 -0
- package/neural-interface/lib/greeting/budgets.js +1 -0
- package/neural-interface/lib/greeting/engine.js +2 -2
- package/neural-interface/lib/greeting/sources.js +10 -12
- package/neural-interface/lib/greeting/writer.js +1 -1
- package/neural-interface/lib/mcp-client-config.js +37 -6
- package/neural-interface/lib/mcp-external-servers.js +40 -7
- package/neural-interface/lib/mcp-installer.js +2 -1
- package/neural-interface/lib/memory-session-capture.js +17 -3
- package/neural-interface/lib/morelogin.js +147 -25
- package/neural-interface/lib/native-loop-providers.js +423 -23
- package/neural-interface/lib/native-loop-runtime.js +23 -2
- package/neural-interface/lib/opencode-native-boundary.js +165 -22
- package/neural-interface/lib/owner-authority.js +1 -1
- package/neural-interface/lib/path-confine.js +12 -9
- package/neural-interface/lib/peer-identity.js +80 -6
- package/neural-interface/lib/pty-host/core.js +28 -1
- package/neural-interface/lib/pty-host/lifetime.js +12 -0
- package/neural-interface/lib/pty-host/manager.js +12 -1
- package/neural-interface/lib/remote-policy.js +1 -1
- package/neural-interface/lib/request-gate.js +3 -0
- package/neural-interface/lib/rulesets/api.js +6 -5
- package/neural-interface/lib/rulesets/fs-safe.js +1 -1
- package/neural-interface/lib/rulesets/installer.js +89 -10
- package/neural-interface/lib/rulesets/render.js +1 -1
- package/neural-interface/lib/session-cache-builder.js +64 -1
- package/neural-interface/lib/skills/catalog.js +5 -1
- package/neural-interface/lib/skills/creation-brief.js +1 -1
- package/neural-interface/lib/skills/creation-sources.js +19 -1
- package/neural-interface/lib/skills/deploy.js +9 -4
- package/neural-interface/lib/skills/draft-confinement.js +3 -1
- package/neural-interface/lib/skills/eval-confinement.js +3 -1
- package/neural-interface/lib/skills/eval-trace.js +16 -0
- package/neural-interface/lib/skills/export.js +5 -2
- package/neural-interface/lib/skills/known-bridge-digests.json +58 -4
- package/neural-interface/lib/skills/ownership.js +1 -1
- package/neural-interface/lib/skills/roots.js +10 -3
- package/neural-interface/lib/skills/runtime-checks.js +6 -3
- package/neural-interface/lib/skills/service.js +15 -7
- package/neural-interface/lib/skills/telemetry.js +6 -0
- package/neural-interface/lib/synabun-version.js +1 -1
- package/neural-interface/lib/system-activity.js +1 -1
- package/neural-interface/lib/whatsapp/brain.js +7 -3
- package/neural-interface/lib/whatsapp/cards.js +22 -9
- package/neural-interface/lib/whatsapp/config.js +1 -1
- package/neural-interface/lib/worker-confinement.js +77 -1
- package/neural-interface/lib/worker-question.js +74 -0
- package/neural-interface/lib/worker-resume.js +13 -4
- package/neural-interface/lib/worker-sandbox.js +46 -16
- package/neural-interface/package-lock.json +18 -2
- package/neural-interface/package.json +2 -1
- package/neural-interface/public/onboarding.html +1 -1
- package/neural-interface/public/shared/agent-runtime-options.js +89 -11
- package/neural-interface/public/shared/agy/agy-bypass.js +47 -0
- package/neural-interface/public/shared/agy/agy-client.js +266 -0
- package/neural-interface/public/shared/agy/agy-commands.js +120 -0
- package/neural-interface/public/shared/agy/agy-copy.js +326 -0
- package/neural-interface/public/shared/agy/agy-diff.js +161 -0
- package/neural-interface/public/shared/agy/agy-events.js +469 -0
- package/neural-interface/public/shared/agy/agy-greeting.js +26 -0
- package/neural-interface/public/shared/agy/agy-options.js +232 -0
- package/neural-interface/public/shared/agy/agy-panel.js +2543 -0
- package/neural-interface/public/shared/agy/agy-render.js +392 -0
- package/neural-interface/public/shared/agy/agy-setup.js +149 -0
- package/neural-interface/public/shared/agy/agy-styles.js +604 -0
- package/neural-interface/public/shared/agy/agy-tabs-logic.js +181 -0
- package/neural-interface/public/shared/api.js +4 -4
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +3 -4
- package/neural-interface/public/shared/assistant/asst-api.js +15 -3
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +56 -9
- package/neural-interface/public/shared/assistant/asst-budget.js +5 -4
- package/neural-interface/public/shared/assistant/asst-computer.js +26 -2
- package/neural-interface/public/shared/assistant/asst-control.js +48 -0
- package/neural-interface/public/shared/assistant/asst-hosts.js +16 -7
- package/neural-interface/public/shared/assistant/asst-limit-dock.js +6 -1
- package/neural-interface/public/shared/assistant/asst-limit-wait.js +38 -5
- package/neural-interface/public/shared/assistant/asst-motion-gate.js +80 -0
- package/neural-interface/public/shared/assistant/asst-panel.js +46 -9
- package/neural-interface/public/shared/assistant/asst-render.js +112 -18
- package/neural-interface/public/shared/assistant/asst-route.js +237 -57
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +9 -8
- package/neural-interface/public/shared/assistant/asst-scene-styles.js +55 -23
- package/neural-interface/public/shared/assistant/asst-scenes.js +279 -80
- package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +4 -4
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +51 -7
- package/neural-interface/public/shared/assistant/asst-slash.js +8 -2
- package/neural-interface/public/shared/assistant/asst-state.js +76 -9
- package/neural-interface/public/shared/assistant/asst-style-cache.js +44 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +58 -4
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +34 -7
- package/neural-interface/public/shared/assistant/asst-usage.js +2 -1
- package/neural-interface/public/shared/cdx/cdx-output.js +26 -3
- package/neural-interface/public/shared/cdx/cdx-panel.js +14 -2
- package/neural-interface/public/shared/cdx/cdx-preview.js +12 -0
- package/neural-interface/public/shared/cdx/cdx-protocol.js +11 -10
- package/neural-interface/public/shared/cdx/cdx-render.js +10 -9
- package/neural-interface/public/shared/cdx/cdx-requests.js +11 -1
- package/neural-interface/public/shared/cdx/cdx-styles.js +4 -0
- package/neural-interface/public/shared/cdx/cdx-tabs.js +75 -5
- package/neural-interface/public/shared/cli-install-controller.js +218 -0
- package/neural-interface/public/shared/cli-install-view.js +7 -4
- package/neural-interface/public/shared/cli-status.js +9 -8
- package/neural-interface/public/shared/constants.js +3 -2
- package/neural-interface/public/shared/context-menu-model.js +1 -0
- package/neural-interface/public/shared/cp/cp-permissions.js +12 -0
- package/neural-interface/public/shared/cp/cp-restore.js +162 -0
- package/neural-interface/public/shared/cp/cp-tool-cards.js +10 -3
- package/neural-interface/public/shared/desktop-bridge.js +17 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +12 -0
- package/neural-interface/public/shared/desktop-titlebar.js +13 -4
- package/neural-interface/public/shared/desktop-update-view.js +1 -0
- package/neural-interface/public/shared/explorer/fx-api.js +4 -4
- package/neural-interface/public/shared/explorer/fx-links.js +3 -3
- package/neural-interface/public/shared/explorer/fx-logic.js +1 -1
- package/neural-interface/public/shared/explorer/fx-main.js +48 -16
- package/neural-interface/public/shared/explorer/fx-tree.js +1 -0
- package/neural-interface/public/shared/greeting/greeting-card.js +2 -2
- package/neural-interface/public/shared/greeting/greeting-view.js +1 -0
- package/neural-interface/public/shared/html-shell.js +21 -4
- package/neural-interface/public/shared/loading-teardown.js +34 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +6 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +28 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +13 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +17 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +6 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +101 -68
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +46 -3
- package/neural-interface/public/shared/provider-icons.js +4 -2
- package/neural-interface/public/shared/settings/settings-rules.js +2 -2
- package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +1 -1
- package/neural-interface/public/shared/settings/settings-skill-folders.js +2 -2
- package/neural-interface/public/shared/showcase-privacy.js +6 -1
- package/neural-interface/public/shared/sidepanel-session-status.js +3 -3
- package/neural-interface/public/shared/skills/ss-creation.js +6 -3
- package/neural-interface/public/shared/skills/ss-dialog.js +5 -2
- package/neural-interface/public/shared/skills/ss-lint.js +9 -1
- package/neural-interface/public/shared/skills/ss-profiles.js +44 -6
- package/neural-interface/public/shared/skills/ss-review-view.js +2 -2
- package/neural-interface/public/shared/skills/studio/sx-actions.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-create-ai.js +2 -1
- package/neural-interface/public/shared/skills/studio/sx-dom.js +2 -1
- package/neural-interface/public/shared/skills/studio/sx-fixes-view.js +359 -0
- package/neural-interface/public/shared/skills/studio/sx-fixes.js +327 -0
- package/neural-interface/public/shared/skills/studio/sx-inspector.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-install-flow.js +9 -6
- package/neural-interface/public/shared/skills/studio/sx-install.js +20 -3
- package/neural-interface/public/shared/skills/studio/sx-library-view.js +144 -35
- package/neural-interface/public/shared/skills/studio/sx-library.js +6 -2
- package/neural-interface/public/shared/skills/studio/sx-main.js +11 -2
- package/neural-interface/public/shared/skills/studio/sx-review-view.js +1 -1
- package/neural-interface/public/shared/skills/studio/sx-subject.js +7 -6
- package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +6 -5
- package/neural-interface/public/shared/state.js +1 -1
- package/neural-interface/public/shared/storage-retry.js +47 -0
- package/neural-interface/public/shared/storage.js +25 -4
- package/neural-interface/public/shared/streaming-markdown.js +58 -0
- package/neural-interface/public/shared/styles.css +362 -35
- package/neural-interface/public/shared/synabun-mascot.js +27 -8
- package/neural-interface/public/shared/synabun-ticker.js +147 -12
- package/neural-interface/public/shared/text-cache.js +29 -0
- package/neural-interface/public/shared/tool-list-picker.js +2 -2
- package/neural-interface/public/shared/tool-list-view.js +2 -2
- package/neural-interface/public/shared/topright-overflow-logic.js +54 -0
- package/neural-interface/public/shared/ui-antigravity-panel.js +19 -0
- package/neural-interface/public/shared/ui-assistant.js +2 -0
- package/neural-interface/public/shared/ui-automation-studio.js +20 -12
- package/neural-interface/public/shared/ui-claude-panel.js +374 -134
- package/neural-interface/public/shared/ui-cli-banner.js +23 -167
- package/neural-interface/public/shared/ui-file-explorer.js +48 -6
- package/neural-interface/public/shared/ui-file-links.js +2 -2
- package/neural-interface/public/shared/ui-games.js +2 -2
- package/neural-interface/public/shared/ui-judgments.js +1 -1
- package/neural-interface/public/shared/ui-keybinds.js +8 -2
- package/neural-interface/public/shared/ui-link.js +3 -3
- package/neural-interface/public/shared/ui-loading.js +5 -4
- package/neural-interface/public/shared/ui-menubar.js +2 -2
- package/neural-interface/public/shared/ui-native-loop-router.js +4 -0
- package/neural-interface/public/shared/ui-navbar.js +45 -0
- package/neural-interface/public/shared/ui-notifications.js +1 -0
- package/neural-interface/public/shared/ui-resume.js +9 -7
- package/neural-interface/public/shared/ui-schedules-studio.js +41 -10
- package/neural-interface/public/shared/ui-scroll-follow.js +16 -5
- package/neural-interface/public/shared/ui-sessions.js +22 -12
- package/neural-interface/public/shared/ui-settings.js +90 -65
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +9 -2
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -3
- package/neural-interface/public/shared/ui-sidepanel-tray.js +48 -7
- package/neural-interface/public/shared/ui-sidepanel-windows.js +3 -3
- package/neural-interface/public/shared/ui-terminal.js +146 -10
- package/neural-interface/public/shared/ui-tool-updates.js +3 -3
- package/neural-interface/public/shared/ui-tooltip.js +71 -46
- package/neural-interface/public/shared/ui-topright-overflow.js +233 -0
- package/neural-interface/public/shared/ui-whiteboard.js +1 -1
- package/neural-interface/public/shared/ui-worker-end.js +1 -1
- package/neural-interface/public/shared/whatsapp/wa-view.js +2 -2
- package/neural-interface/public/shared/worker-questions.js +34 -0
- package/neural-interface/public/sidepanel-session.html +1 -1
- package/neural-interface/server.js +731 -466
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/neural-interface/templates/rulesets/legacy-hashes.json +5 -5
- package/neural-interface/templates/rulesets/manifest.json +1 -1
- package/npm-shrinkwrap.json +18 -2
- package/package.json +2 -1
- package/skills/skill-forge/SKILL.md +4 -4
- package/skills/synabun/SKILL.md +1 -1
- package/skills/synabun/modules/schedule.md +3 -3
- /package/neural-interface/templates/rulesets/{gemini.md → antigravity.md} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,142 @@
|
|
|
1
|
+
# SynaBun v.2.2.1
|
|
2
|
+
|
|
3
|
+
2.2.1 is a fix release: shared browser runs work again with MoreLogin, screenshots reach OpenAI models in the Assistant, and the Assistant no longer keeps the CPU busy while a worker runs.
|
|
4
|
+
|
|
5
|
+
## ✨ New
|
|
6
|
+
|
|
7
|
+
- **Profiling the app with a debug client** — Developers can set `SYNABUN_ALLOW_DEBUG_CLIENT` to a port when starting SynaBun, so a local browser started with remote debugging on that port can load the app and profile it. It is off unless you set it.
|
|
8
|
+
|
|
9
|
+
## 🛠 Fixed
|
|
10
|
+
|
|
11
|
+
- **Shared browser runs refused with an unclear error** — With MoreLogin as the browser, tasks that needed the browser could fail with a generic "unverified OpenCode serve" error even when OpenCode had nothing to do with the task. They now run, and a real refusal names its cause.
|
|
12
|
+
- **Screenshots ignored by OpenAI models in the Assistant** — Screenshots attached with the paperclip or sent from the whiteboard now reach Codex and OpenAI models as images.
|
|
13
|
+
- **High CPU while a worker ran** — The Assistant window used most of a CPU core while a worker was running. It now stays near idle.
|
|
14
|
+
- **Settings showed placeholders for ordinary MCP values** — When hiding secrets in MCP server settings, SynaBun also hid ordinary words such as the project name. Now only real credentials are hidden.
|
|
15
|
+
- **File Explorer git menu hidden under the toolbar** — The branch and commit menu now opens above the top-right toolbar instead of underneath it.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# SynaBun v.2.2.0
|
|
20
|
+
|
|
21
|
+
2.2.0 is a reliability release: it fixes a slow memory buildup in long-running chat panels, makes closing a minimized OpenCode tab actually stop that conversation, and cleans up terminal processes left behind by a crash.
|
|
22
|
+
|
|
23
|
+
## Fixed
|
|
24
|
+
|
|
25
|
+
- **Long sessions no longer grow unbounded in memory** — chat transcripts stayed in memory after being closed or replaced, and streaming replies re-rendered the entire reply on every update instead of just the new part. Both are fixed, so the interface stays fast and light over many hours of use.
|
|
26
|
+
- **Closing an OpenCode tab now actually stops the conversation** — clicking the × on a minimized OpenCode session only hid it before; the conversation kept running in the background. It now stops properly when you close it.
|
|
27
|
+
- **Crashed terminal sessions no longer leave orphaned processes behind** — if a terminal session crashed or was force-stopped, its underlying shell process could keep running unseen. It is now always cleaned up.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# SynaBun v.2.1.7
|
|
32
|
+
|
|
33
|
+
2.1.7 lets dispatched Assistant task workers ask you a question mid-task instead of guessing, and fixes a browser automation bug where one stuck tab could take down an entire MoreLogin browser session.
|
|
34
|
+
|
|
35
|
+
## ✨ New
|
|
36
|
+
|
|
37
|
+
- **Dispatched workers can ask you a question** — When an Assistant task worker hits a decision only you can make, it can now stop and ask right in that task's live sidepanel tab, across every provider (Claude Code, Codex, OpenCode, Antigravity) and every permission level. Answer from the panel, or by replying to the Assistant's message; the worker picks up and continues from there. Supports multiple-choice questions with more than one answer selected at once.
|
|
38
|
+
|
|
39
|
+
## 🛠 Fixed
|
|
40
|
+
|
|
41
|
+
- **A stuck browser tab no longer breaks the whole automation session** — On some automated browser sessions, a single tab's background service worker could get stuck, and every subsequent browser action in that session (navigating, taking a snapshot or screenshot, reading the console, running a script, reloading) would fail with a network-protection error until the server was restarted. SynaBun now detects and recovers from this automatically, without needing a restart, and a stuck tab no longer affects the rest of the session.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# SynaBun v.2.1.6
|
|
46
|
+
|
|
47
|
+
A small Windows installer fix: finishing an install no longer looks stuck.
|
|
48
|
+
|
|
49
|
+
## 🛠 Fixed
|
|
50
|
+
|
|
51
|
+
- **Installer no longer shows "Not Responding" on finish** — On Windows, clicking Finish with "Run SynaBun" checked used to make the installer wait on its own window while Windows scanned the brand-new SynaBun.exe, so it could sit there looking frozen for 20-30 seconds before the app actually opened. The installer now closes right away and hands off to the desktop, so it never waits and never appears stuck.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
# SynaBun v.2.1.5
|
|
56
|
+
|
|
57
|
+
A fix-focused release: git status checks no longer pile up and spike CPU in repos with large ignored trees.
|
|
58
|
+
|
|
59
|
+
## ✨ New
|
|
60
|
+
|
|
61
|
+
- **One shared git status check** — Every part of SynaBun that needs a repo's git status (the File Explorer, the project greeting, and others) now shares one careful check per repo instead of each running its own.
|
|
62
|
+
|
|
63
|
+
## 🛠 Fixed
|
|
64
|
+
|
|
65
|
+
- **Git status checks piling up and pegging CPU** — In a repo with a huge ignored tree (for example, a large `node_modules`), overlapping git status checks could run several processes at once, each using close to a full CPU core, and some kept running even after SynaBun had stopped. Checks are now capped, deduplicated, given a time limit, and cleaned up reliably, including on Windows. A timed-out or partial check is now shown as incomplete rather than silently reported as "no changes."
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
# SynaBun v.2.1.4
|
|
70
|
+
|
|
71
|
+
A Windows-focused release: updates now show a visible progress window, Git for Windows ships smaller and installs faster, and signed builds are supported when a certificate is configured.
|
|
72
|
+
|
|
73
|
+
## Added
|
|
74
|
+
|
|
75
|
+
- **Visible update progress on Windows** — checking for and installing an update now shows a window with its steps and a climbing percentage, then confirms the restart, instead of leaving you guessing.
|
|
76
|
+
- **Optional code signing on Windows** — a release can now be signed with a configured certificate; builds made without one are unaffected and install exactly as before.
|
|
77
|
+
|
|
78
|
+
## Changed
|
|
79
|
+
|
|
80
|
+
- **Smaller, faster Windows installer** — Git for Windows (used for Claude Code's Bash tool and its hooks) now ships as a single packed file and is unpacked only on first use, instead of thousands of loose files in every installer and update.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
# SynaBun v.2.1.3
|
|
85
|
+
|
|
86
|
+
Windows feels lighter in this release, and OpenCode 2.2.5 is now supported.
|
|
87
|
+
|
|
88
|
+
## Fixed
|
|
89
|
+
|
|
90
|
+
- **Smoother on Windows** — the window's title bar and overlay chrome no longer apply a blur effect there, since it cost noticeably more on Windows than elsewhere; browsing menus and dialogs should feel snappier.
|
|
91
|
+
- **Conversations open faster** — reopening a past conversation now shows its most recent messages right away instead of waiting for the whole transcript to parse; earlier messages load in as you scroll back, in the order they happened.
|
|
92
|
+
- **Fewer stalls right after launch** — a couple of background lookups (the model list, a few one-time checks) now warm up without holding up the window that is waiting on them, so the window and its panels appear sooner, especially on a slower machine.
|
|
93
|
+
|
|
94
|
+
## Added
|
|
95
|
+
|
|
96
|
+
- **OpenCode 2.2.5 support** — the side panel now recognizes and connects to OpenCode 2.2.5 the same way it already did for 2.1.4.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
# SynaBun v.2.1.2
|
|
101
|
+
|
|
102
|
+
2.1.2 is a routine maintenance build. There is nothing new to try and no behavior changes to expect; it keeps the release packaging current between larger updates.
|
|
103
|
+
|
|
104
|
+
## Changed
|
|
105
|
+
|
|
106
|
+
- **Maintenance build** — Internal build and packaging metadata were refreshed. The app itself behaves exactly as it did in the previous release.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# SynaBun v.2.1.1
|
|
111
|
+
|
|
112
|
+
A fix-focused release: Skills Studio gets a one-click fix panel, Antigravity conversations join Resume and memory, and a batch of Windows and panel bugs are cleaned up.
|
|
113
|
+
|
|
114
|
+
## ✨ New
|
|
115
|
+
|
|
116
|
+
- **Skills Studio fix panel** — A new "Fix" view from the health pill lists detected problems with one-click fixes, a preview before applying, and the option to dismiss or keep specific issues.
|
|
117
|
+
- **Antigravity conversations in Resume and memory** — Antigravity conversations now show up in Resume's search (previously only titles matched) and are captured as memory sessions, the same as the other assistants.
|
|
118
|
+
|
|
119
|
+
## 🛠 Fixed
|
|
120
|
+
|
|
121
|
+
- **Assistant route cards always offer both options** — Every route card now shows a "Here" and a "Dispatch" choice, whatever the assistant proposed.
|
|
122
|
+
- **MoreLogin detection on Windows** — The profile picker could come up empty when MoreLogin was installed outside its default folder, or silently show nothing on an unexpected response from MoreLogin's local API. Both are fixed.
|
|
123
|
+
- **Skills Studio: false "duplicate" warning** — Installing the same skill into more than one folder a tool reads from no longer shows a spurious duplicate warning; a real name clash with a different skill still does.
|
|
124
|
+
- **Skills Studio delete confirmation** — The delete dialog was redesigned for clarity.
|
|
125
|
+
- **Assistant: duplicate follow-up cards** — A turn that mixed text and tool calls no longer shows a repeated follow-up or question card for each text segment.
|
|
126
|
+
- **Renamed Assistant sessions on Windows** — A session renamed in the side panel no longer reverts to "SynaBun" after a file lock, server restart, or reload on Windows.
|
|
127
|
+
- **Claude panel: "Think off" on models with effort levels** — Turning thinking off now actually turns it off, instead of falling back to the model's effort setting.
|
|
128
|
+
- **Codex: effort level "none"** — Selecting "none" now behaves as its own choice instead of silently mapping to the model's default.
|
|
129
|
+
- **Release publication: URL reputation checks** — Retries now read fresh evidence for the exact URL before submitting a new analysis, instead of reusing a stale one.
|
|
130
|
+
- **Guarded workers on the newest macOS** — A protected worker's isolated network connection back to SynaBun could fail to come up on the latest macOS release; fixed, with no change in behavior on earlier macOS versions.
|
|
131
|
+
|
|
132
|
+
## ⚙️ Changed
|
|
133
|
+
|
|
134
|
+
- **Settings: last native dropdown removed** — The MoreLogin profile picker now uses SynaBun's own styled dropdown.
|
|
135
|
+
- **Skills Studio status pills** — The library list and workspace header now share one consistent status pill style.
|
|
136
|
+
- **Workspace toolbar layout** — The top-right toolbar no longer crops its buttons when space is tight.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
1
140
|
# SynaBun v.2.1.0
|
|
2
141
|
|
|
3
142
|
SynaBun 2.1.0 adds downloadable release verification reports, improves automated package publishing, and changes Windows clipboard images to explicit paste.
|
package/README.md
CHANGED
|
@@ -178,7 +178,7 @@ Everything SynaBun stores is in one folder outside the app: `~/.synabun` on macO
|
|
|
178
178
|
|
|
179
179
|
## Links
|
|
180
180
|
|
|
181
|
-
- [Changelog](./CHANGELOG.md): what is new in 2.1
|
|
181
|
+
- [Changelog](./CHANGELOG.md): what is new in 2.2.1 and before
|
|
182
182
|
- [Security](./SECURITY.md): security model and how to report a vulnerability
|
|
183
183
|
- [Contributing](./CONTRIBUTING.md): bug reports and feature requests are welcome as [issues](https://github.com/danilokhury/Synabun/issues); pull requests are not accepted
|
|
184
184
|
- [Website](https://synabun.ai), [docs](https://synabun.ai/docs) and [blog](https://synabun.ai/blog)
|
package/docs/whatsapp.md
CHANGED
|
@@ -41,7 +41,7 @@ Settings → Messages → WhatsApp → **Safety** decides what a message from th
|
|
|
41
41
|
| **Ask on my phone** (default) | Before anything that would change files, run a command or start an agent, SynaBun asks on WhatsApp as a yes / no and acts only on your **yes** (once). Any other message approves nothing and the conversation carries on (see [Questions and approvals](#questions-and-approvals)). Where a task runs is asked the same way, and that answer approves exactly one agent: a second one is asked again. Agents started from WhatsApp get no computer use and run in a registered project folder. |
|
|
42
42
|
| **Autonomous** | Acts without asking, like the Assistant on the computer. It **stays on until you turn it off** in Settings → Messages → WhatsApp → **Safety** by choosing Ask on my phone or Read-only, and it survives restarts. Autonomous can read any file your computer account can, including SynaBun's WhatsApp login. Use it only with a locked phone, ideally on a second number. |
|
|
43
43
|
|
|
44
|
-
**Ask and Autonomous need a Claude brain.** Which model runs the conversation is set under Conversation → **Model** (see [The model](#the-model)); the default is the Assistant panel's last-used brain. On a Codex or
|
|
44
|
+
**Ask and Autonomous need a Claude brain.** Which model runs the conversation is set under Conversation → **Model** (see [The model](#the-model)); the default is the Assistant panel's last-used brain. On a Codex, OpenCode or Antigravity brain the conversation runs **Read-only**, whatever the level says: Codex cannot ask before ordinary commands, and OpenCode keeps its own permissions. Codex runs in its read-only sandbox with the network off. OpenCode runs its plan agent, with `webfetch`, `websearch` and `codesearch` refused by SynaBun's gate plugin; if that plugin does not load, the conversation does not run. Antigravity's policy hook refuses everything the read-only classifier does ([docs/antigravity-sidepanel.md](./antigravity-sidepanel.md#the-brain-libassistant-brainsantigravityjs)). The phone is told once ("This conversation runs read-only because its brain is Codex; switch the WhatsApp brain to Claude for Ask/Autonomous.") and Safety shows the same warning.
|
|
45
45
|
|
|
46
46
|
Turning on Autonomous takes two steps so that neither a stolen phone nor a local program can do it alone:
|
|
47
47
|
|
|
@@ -50,7 +50,7 @@ Turning on Autonomous takes two steps so that neither a stolen phone nor a local
|
|
|
50
50
|
|
|
51
51
|
There is no time limit after that: the phone's confirmation says Autonomous stays on until it is turned off in Settings → WhatsApp. `/pause` pauses acting on your messages and `/stop` stops the current task; neither changes the level. An Autonomous turned on by SynaBun 2.0.5 or earlier (which ended by itself after 8 hours) is not carried over: after the update it reads as Ask, once, and Activity says so ("Autonomous from an earlier version ended; turn it on again to keep it on without a time limit"). Turn it on again to keep it on.
|
|
52
52
|
|
|
53
|
-
Lowering the level applies at once, and so does switching the conversation's brain to Codex or
|
|
53
|
+
Lowering the level applies at once, and so does switching the conversation's brain to Codex, OpenCode or Antigravity. At every level:
|
|
54
54
|
|
|
55
55
|
- Computer use (the Assistant controlling this Mac) is off unless you turned it on at this computer, and then only as the level allows: see [Computer use](#computer-use).
|
|
56
56
|
- Commands, paths and tools that reach credentials, the WhatsApp session itself (its folder, its runtime, `state.db`), SynaBun's own settings (`kv_config`, `claude-code-projects.json`), persistence points (shell rc files, LaunchAgents, crontab) or browser profiles are refused (`isDeniedRemoteTool`). So is a call whose arguments the brain's host did not pass.
|
|
@@ -72,7 +72,7 @@ With the switch on, the level decides:
|
|
|
72
72
|
| **Ask on my phone** | **One yes per task.** At Ask every task is already asked where it runs; for a task done on the Mac that question is the one about the Mac too: *"For "Tidy the desktop", want me to do it on your Mac, here with Sonnet? I'll control the screen until this task is done. (yes / no)"*. A plain **yes** from your phone turns computer use on for that task; there is no approval per click and no second question. `no` drops the task. |
|
|
73
73
|
| **Autonomous** | Works without asking while Autonomous is enabled, **in a task your own plain message started**. Every other turn asks once on your phone, as at Ask: a turn SynaBun starts itself (an agent's result, a route decision, a follow-up on another model, background work), a turn typed into the conversation on the computer, and a message with forwarded or quoted text or a picture. What started the turn decides, not what was said before it. |
|
|
74
74
|
|
|
75
|
-
Off as well, whatever the level: while WhatsApp is paused, in a conversation whose brain is Codex or
|
|
75
|
+
Off as well, whatever the level: while WhatsApp is paused, in a conversation whose brain is Codex, OpenCode or Antigravity (it runs read-only), and when computer use is not set up on this Mac (the *Computer* switch in the Assistant panel runs the one-time setup).
|
|
76
76
|
|
|
77
77
|
**One yes, and when a second question still appears.** The Assistant is told to route a task that needs the Mac as a *computer* task done here, on its own model. The route card then says in words that the Mac will be controlled, and its yes is both answers: where the task runs and the computer approval for the turn that carries it out. That turn is the one the card was asked in when you answer while the Assistant is still waiting, and otherwise the turn SynaBun starts with your decision. You are asked a second, separate question (*"Want me to control your Mac for this? I'll stop when this task is done. (yes / no)"*) at the first computer action when the card did not say the Mac would be controlled:
|
|
78
78
|
|
|
@@ -113,7 +113,7 @@ The approval is bound to the card you saw: SynaBun records on the card, when it
|
|
|
113
113
|
|
|
114
114
|
**What a program running as you on this Mac can and cannot do.** SynaBun's local routes trust a caller on this machine that sends the page's headers (`lib/http-guards.js`): that is the app-wide trust model, not something this feature changes. So a local process can turn the **Computer use** switch on or off through `PUT /api/whatsapp/config`, pause WhatsApp, deny a pending request over the Assistant socket, and approve a route card there (the route only). It cannot grant computer use for a WhatsApp task: neither the request nor the Mac part of a route card is granted by a socket or REST answer, only by the bridge's match on a message from the linked owner's phone. Inside SynaBun's own process the same holds: what grants is a private capability the bridge alone holds (handed to it once, when it is built; a rebuilt bridge gets a fresh one and the old one stops working), not the label `whatsapp` on an answer, which is only what the audit records. At Ask, a switch turned on by such a process therefore still needs your yes on the phone for every task; at Autonomous (which itself needs the ALLOW code from your phone) it would let your own plain messages use the Mac unasked. A process that can already run as you can of course act on the Mac without SynaBun.
|
|
115
115
|
|
|
116
|
-
**How it is enforced.** `remoteComputerUse` in `lib/remote-policy.js` is the one place that decides (off, after approval, or allowed, with the reason), from the switch, the effective level, pause, the turn's trust, the brain and the desktop's setup. The runtime, the Claude brain's PreToolUse hook, the desktop gate, the persona and the panel all ask it. The layers stay independent: the brain is built with a desktop grant only when the decision is not "off", that grant is **held** (it resolves to nothing) except while a turn runs that may use the computer, the hook refuses, asks or allows each call, and the desktop service asks the runtime again at every action. A Codex or
|
|
116
|
+
**How it is enforced.** `remoteComputerUse` in `lib/remote-policy.js` is the one place that decides (off, after approval, or allowed, with the reason), from the switch, the effective level, pause, the turn's trust, the brain and the desktop's setup. The runtime, the Claude brain's PreToolUse hook, the desktop gate, the persona and the panel all ask it. The layers stay independent: the brain is built with a desktop grant only when the decision is not "off", that grant is **held** (it resolves to nothing) except while a turn runs that may use the computer, the hook refuses, asks or allows each call, and the desktop service asks the runtime again at every action. A Codex, OpenCode or Antigravity host is refused at the gate.
|
|
117
117
|
|
|
118
118
|
## Commands
|
|
119
119
|
|
|
@@ -143,11 +143,11 @@ On WhatsApp the Assistant talks like a person in a chat. There are no numbered c
|
|
|
143
143
|
| Asked | Example | What answers it |
|
|
144
144
|
|---|---|---|
|
|
145
145
|
| A tool | "I need your OK to run this: Bash: `npm test` OK to go ahead? (yes / no)" | `yes` allows once; `no` denies (`no, use staging` denies with that note) |
|
|
146
|
-
| Where a task runs | "For "Fix the login test", want me to hand it to Opus? (yes / no) I could also do it here with Sonnet or
|
|
146
|
+
| Where a task runs | "For "Fix the login test", want me to hand it to Opus? (yes / no) I could also do it here with Sonnet or hand it to Haiku: just name it." | `yes` approves the first proposal; the name of another model it offered picks that one (`haiku`, `use haiku`, `no, use haiku`); `here` / `do it here` picks the Assistant's own model, `dispatch` / `a worker` / `hand it off` the first worker offered; `no` declines. A model of the Assistant's own provider is done here too ("do it here with Haiku"), never "handed" |
|
|
147
147
|
| A plan | "Here's my plan: … Shall I go ahead? (yes / no, or tell me what to change)" | `yes` approves; `no` keeps planning |
|
|
148
|
-
| Where a Mac task runs (Ask, with the switch on) | "For "Tidy the desktop", want me to do it on your Mac, here with Sonnet? I'll control the screen until this task is done. (yes / no) I could also
|
|
148
|
+
| Where a Mac task runs (Ask, with the switch on) | "For "Tidy the desktop", want me to do it on your Mac, here with Sonnet? I'll control the screen until this task is done. (yes / no) I could also do it here with Haiku: just name it. Then I ask about the Mac separately." | `yes` approves the task here **and** computer use for it (one yes); a named model picks that model only; `no` declines. See [Computer use](#computer-use) |
|
|
149
149
|
| Controlling the Mac, asked on its own | "Want me to control your Mac for this? I'll stop when this task is done. (yes / no)" | `yes` turns computer use on for this task (this turn); `no` keeps it off for the rest of it. Asked only when the route question did not already cover the Mac |
|
|
150
|
-
| A worker's request | "One of the agents needs your OK to run this: …" | as for a tool |
|
|
150
|
+
| A worker's request | "One of the agents needs your OK to run this: …"; a worker on another provider than Claude Code is named: "One of the agents (Antigravity) needs your OK to run this: …" | as for a tool |
|
|
151
151
|
|
|
152
152
|
**Who else can answer a worker's request.** You, in SynaBun on the computer, always. The Assistant itself (its `agent_send` reply) only for workers its own conversation started (`403 RUN_NOT_IN_SESSION` for another conversation's worker) and only when the level lets it: with *strict worker approvals* on and below Autonomous it is refused (`403 HUMAN_APPROVAL_REQUIRED`) and the answer is yours alone; with the setting off (the default) it may answer at Ask, where its `agent_send` call is itself asked on your phone first, and at Autonomous, where nothing is asked. At Read-only no worker runs.
|
|
153
153
|
|
|
@@ -172,7 +172,7 @@ A tool approval still shows the whole request exactly as it runs, every argument
|
|
|
172
172
|
|
|
173
173
|
A WhatsApp conversation never sits waiting for workers. The Assistant dispatches, says in one line what it started and ends its turn; you keep chatting and get answers. When a worker finishes, asks something or fails, the result reaches the Assistant as a mailbox event after the current turn, and its report is forwarded to the phone as an *Update* (or as the reply, when you had just approved that task). Results are never merged into the reply to another message.
|
|
174
174
|
|
|
175
|
-
Two things hold this, besides the persona: `agent_wait` returns after one second for a WhatsApp conversation (`lib/assistant-api.js`), with what is already done and a note telling the brain to end its turn because the result arrives as a mailbox event; desktop sessions wait as they asked. And a message that arrives while a turn runs is delivered when that turn ends, for every brain (Claude, Codex, OpenCode). Adding a message to a turn that is still running is not done: the Claude CLI could take it, but the bridge would have to tell a merged turn from a queued one, and the route gate resets on every prompt.
|
|
175
|
+
Two things hold this, besides the persona: `agent_wait` returns after one second for a WhatsApp conversation (`lib/assistant-api.js`), with what is already done and a note telling the brain to end its turn because the result arrives as a mailbox event; desktop sessions wait as they asked. And a message that arrives while a turn runs is delivered when that turn ends, for every brain (Claude, Codex, OpenCode, Antigravity). Adding a message to a turn that is still running is not done: the Claude CLI could take it, but the bridge would have to tell a merged turn from a queued one, and the route gate resets on every prompt.
|
|
176
176
|
|
|
177
177
|
**A task continued on another model answers you here.** When the router moves your task to another model in the same conversation (a route it chose by itself, a remembered route, or a model you named on a card), the Assistant first says so in one line and ends its turn; the turn that does the task on the new model follows, and its answer is the reply to your message, sent once, whether or not *Forward background results* is on. The runtime marks that turn before any of its output (`synabun.continuation`, with where the prompt it continues came from), and it stays a turn SynaBun starts itself, not a new message of yours: what it may do is decided as for any such turn (at Autonomous it asks once on your phone before it uses the Mac; its questions and approvals reach your phone and take your answer). A task you typed into the conversation on the computer keeps its continuation on the computer, as before.
|
|
178
178
|
|
|
@@ -181,7 +181,7 @@ Two things hold this, besides the persona: `agent_wait` returns after one second
|
|
|
181
181
|
Conversation → **Model** decides which brain (provider, model, effort) runs the WhatsApp conversation.
|
|
182
182
|
|
|
183
183
|
- **Same as the Assistant** (default): the brain the Assistant panel last used, read when a conversation starts and when this setting changes. The panel picking another model later does not move a conversation that is under way.
|
|
184
|
-
- **A model**: the picker is the Assistant panel's own: the same catalog (models you switched off in the Assistant's Models list are not offered), the same per-model effort list, the same names. A model from Codex or
|
|
184
|
+
- **A model**: the picker is the Assistant panel's own: the same catalog (models you switched off in the Assistant's Models list are not offered), the same per-model effort list, the same names. A model from Codex, OpenCode or Antigravity is listed too, with the note that the conversation then runs Read-only (above).
|
|
185
185
|
|
|
186
186
|
The choice is stored in the WhatsApp settings (`brain`: `null` or `{ provider, model, effort }`) with the same versioned write as the other settings, and checked on the server against the Assistant's catalog before it is stored: an unknown provider, a model the catalog does not list or that is switched off, or an effort the model does not run is a `400`; without a catalog the answer is `503`. Nothing unchecked is stored.
|
|
187
187
|
|
|
@@ -310,7 +310,7 @@ Also refused: a URL, a network share or device path (`\\server\share`, `//server
|
|
|
310
310
|
|
|
311
311
|
**When it is refused.** The answer names the file and the reason (`…/.ssh/id_ed25519 is protected (credentials (SSH, GnuPG, cloud, registry and git logins)): SynaBun never sends it from WhatsApp`), so the Assistant can tell you why; numbers, JIDs and credentials in the path are redacted.
|
|
312
312
|
|
|
313
|
-
**Who may send.** Only the active WhatsApp conversation's own Assistant brain, at any level (Read-only included) and on any brain (Claude, Codex or
|
|
313
|
+
**Who may send.** Only the active WhatsApp conversation's own Assistant brain, at any level (Read-only included) and on any brain (Claude, Codex, OpenCode or Antigravity). Delivering a file you asked for is a reply, like the final text: it needs no route of its own, is never asked on the phone at Ask, and works in plan mode and on the read-only Codex, OpenCode and Antigravity brains. It grants nothing else: no file edits, no computer use, no worker permissions. The brain proves who it is with a credential SynaBun makes for each brain launch of a WhatsApp conversation and gives only to that brain's SynaBun MCP server, through the environment of the brain's own process, never a command line or a file: the Claude CLI expands it into its MCP header, Codex forwards it to its MCP child by name, OpenCode's serve fills it into its MCP entry, Antigravity's `agy acp` passes it to its MCP children in their environment. The `X-Synabun-Role` and `X-Synabun-Terminal` headers, which any local program can send, prove nothing here. A worker, a desktop chat and an earlier WhatsApp conversation are refused (`403`), and so is any request while WhatsApp is off, paused or not connected (`409`). See [SECURITY.md](../SECURITY.md).
|
|
314
314
|
|
|
315
315
|
**When the answer is uncertain.** The send is exactly one request, never retried by SynaBun or by the Assistant. A success (`{ ok, id, type, mimetype, size, fileName, path, fallback }`, `path` the canonical one) means WhatsApp took the file. A timeout (the connector gives a file 120 seconds, the tool 130; each brain's MCP client waits longer: Codex and OpenCode 180 seconds), a connector that stops during the send, or an answer lost on the way back (a reset connection) answers with `uncertain: true`: the file may or may not have arrived, and the Assistant says so instead of sending it again. Ask again if it did not arrive. `UNREACHABLE` (nothing listening for the request) means nothing was sent.
|
|
316
316
|
|
|
@@ -375,7 +375,7 @@ App-wide, every WebSocket upgrade (`/ws/*`) must carry no `Origin` or this serve
|
|
|
375
375
|
| "The WhatsApp connector does not match this SynaBun version" (`HOST_HELD`) | The connector process speaks another IPC protocol than the running server, after an update installed while SynaBun ran. Restart SynaBun. A connector that merely crashes is restarted by itself and never shows this. |
|
|
376
376
|
| Install failed | The message names the cause (`NPM_NOT_FOUND`, `OFFLINE`, `REGISTRY_REFUSED`, `DISK_FULL`, `NO_PERMISSION`, `FILE_IN_USE`, `TIMEOUT`, `VERIFY_FAILED`); *Try again*. |
|
|
377
377
|
| "SynaBun could not make the WhatsApp session files private" (`AUTH_PERMS`) | The session folder or its files are not yours, or cannot be set to 700 / 600 (a shared or network drive, another user's files). Fix the permissions of the folder shown under Data & privacy, then *Reconnect*. |
|
|
378
|
-
| Replies say the conversation "runs read-only because its brain is Codex / OpenCode" | Ask and Autonomous need a Claude brain: pick a Claude model under Conversation → Model. It applies from your next message. |
|
|
378
|
+
| Replies say the conversation "runs read-only because its brain is Codex / OpenCode / Antigravity" | Ask and Autonomous need a Claude brain: pick a Claude model under Conversation → Model. It applies from your next message. |
|
|
379
379
|
| "…is switched off in the Assistant's Models list, so WhatsApp runs on the same brain as the Assistant" | The model chosen for WhatsApp was disabled (or its provider no longer lists it). Pick another under Conversation → Model, or switch it back on in the Assistant's Models list. |
|
|
380
380
|
| I answered something else and the approval was denied | By design: only a plain `yes` approves. Ask again, or say what you want; the Assistant asks again when it needs the approval. |
|
|
381
381
|
| I replied `yes` to an older message and the approval was denied | A reply that quotes a message answers only that message. Quote the request itself, or send `yes` without quoting anything. |
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
import { dirname, join, resolve } from 'node:path';
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
17
|
import {
|
|
18
|
-
|
|
18
|
+
mergeAntigravityMcpConfig,
|
|
19
|
+
parseAntigravityMcpConfig,
|
|
19
20
|
} from '../neural-interface/lib/mcp-client-config.js';
|
|
20
21
|
import {
|
|
21
22
|
mcpServersOf,
|
|
@@ -102,15 +103,18 @@ export function auditAndRepairClientConfigs({
|
|
|
102
103
|
results.claude = { exists: existsSync(claudePath), connected: false, changed: false, path: claudePath };
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
// Google Antigravity (the `agy` CLI and the app share it): ~/.gemini/config/mcp_config.json, mcpServers.SynaBun.
|
|
107
|
+
// The file Antigravity creates is empty until a server is added; one that is not JSON is left alone.
|
|
108
|
+
const antigravityPath = join(home, '.gemini', 'config', 'mcp_config.json');
|
|
109
|
+
let antigravity = null;
|
|
110
|
+
try { antigravity = parseAntigravityMcpConfig(readFileSync(antigravityPath, 'utf-8')); } catch { antigravity = null; }
|
|
111
|
+
if (antigravity?.mcpServers?.SynaBun) {
|
|
112
|
+
const next = mergeAntigravityMcpConfig(antigravity, definition);
|
|
113
|
+
const changed = jsonChanged(antigravity, next);
|
|
114
|
+
if (apply && changed) writeJsonAtomic(antigravityPath, next);
|
|
115
|
+
results.antigravity = { exists: true, connected: true, changed, path: antigravityPath };
|
|
112
116
|
} else {
|
|
113
|
-
results.
|
|
117
|
+
results.antigravity = { exists: existsSync(antigravityPath), connected: false, changed: false, path: antigravityPath };
|
|
114
118
|
}
|
|
115
119
|
|
|
116
120
|
// OpenCode 2's global opencode.json (it never reads the config.json of OpenCode 1), its mcp.servers.SynaBun:
|
package/lib/external-tools.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SynaBun — external tools stay external
|
|
3
3
|
*
|
|
4
|
-
* Claude Code, Codex, OpenCode and
|
|
4
|
+
* Claude Code, Codex, OpenCode and the Antigravity CLI are programs of their own. The
|
|
5
5
|
* user installs them; SynaBun finds what is installed (Settings, PATH and the
|
|
6
6
|
* OS PATH, the folders of every install method:
|
|
7
7
|
* neural-interface/lib/cli-resolver.js) and talks to it, through a thin
|
|
@@ -70,10 +70,11 @@ export const EXTERNAL_TOOLS = Object.freeze([
|
|
|
70
70
|
patterns: Object.freeze([new RegExp(`^opencode-${PLATFORMS}-`)]),
|
|
71
71
|
}),
|
|
72
72
|
Object.freeze({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
// Google ships the Antigravity CLI as a signed binary (no npm package): only its command is matched.
|
|
74
|
+
id: 'antigravity',
|
|
75
|
+
label: 'Antigravity CLI',
|
|
76
|
+
command: 'agy',
|
|
77
|
+
packages: Object.freeze([]),
|
|
77
78
|
patterns: Object.freeze([]),
|
|
78
79
|
}),
|
|
79
80
|
]);
|
package/lib/update-snapshot.js
CHANGED
|
@@ -44,18 +44,81 @@
|
|
|
44
44
|
* (collect, copy, archive, verify, integrity).
|
|
45
45
|
*/
|
|
46
46
|
|
|
47
|
-
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
47
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
48
48
|
import { basename, dirname, relative, resolve, isAbsolute } from 'node:path';
|
|
49
49
|
import { dataHomeHasState } from './data-home-migration.js';
|
|
50
50
|
|
|
51
51
|
export const UPDATE_HANDOFF_FILE = 'update-handoff.json';
|
|
52
52
|
export const handoffPathFor = (dataHome) => resolve(dataHome, 'data', UPDATE_HANDOFF_FILE);
|
|
53
53
|
export const updateSnapshotFolder = (dataHome) => resolve(dataHome, 'backups', 'updates');
|
|
54
|
+
export const autoBackupConfigPathFor = (dataHome) => resolve(dataHome, 'data', 'auto-backup-config.json');
|
|
54
55
|
|
|
55
56
|
const VERSION = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
|
|
56
57
|
const INSTALL_ID = /^[A-Za-z0-9_-]{6,64}$/;
|
|
57
58
|
const SNAPSHOT_NAME = /^synabun-pre-update-[\dT:.\-Z]+\.zip$/;
|
|
58
59
|
|
|
60
|
+
/** Default kept pre-update snapshots when nothing configures a count: the one just written only. */
|
|
61
|
+
export const DEFAULT_PRE_UPDATE_KEEP = 1;
|
|
62
|
+
/** Overrides the configured count when set to a non-negative integer. */
|
|
63
|
+
export const PRE_UPDATE_KEEP_ENV = 'SYNABUN_PRE_UPDATE_BACKUP_KEEP';
|
|
64
|
+
|
|
65
|
+
/** The env var wins over `configured` (the settings mechanism's retention.preUpdateKeep) when it is a non-negative integer; else `configured`; else DEFAULT_PRE_UPDATE_KEEP. */
|
|
66
|
+
export function resolvePreUpdateKeep(configured) {
|
|
67
|
+
const fromEnv = process.env[PRE_UPDATE_KEEP_ENV];
|
|
68
|
+
if (fromEnv != null && fromEnv.trim() !== '') {
|
|
69
|
+
const parsed = Number(fromEnv);
|
|
70
|
+
if (Number.isInteger(parsed) && parsed >= 0) return parsed;
|
|
71
|
+
}
|
|
72
|
+
return Number.isInteger(configured) && configured >= 0 ? configured : DEFAULT_PRE_UPDATE_KEEP;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Deletes older synabun-pre-update-*.zip files in `folderPath`, keeping the
|
|
77
|
+
* newest `keep` plus `keepPath` (the snapshot this run just wrote or verified,
|
|
78
|
+
* kept even if a clock skew left it out of the newest `keep` by file time).
|
|
79
|
+
* Only a name of the exact pre-update pattern is ever read or removed: nothing
|
|
80
|
+
* else in `folderPath`, and nothing in a sibling folder (backups/rulesets and
|
|
81
|
+
* the rest), is touched. Call only after a new snapshot is written and
|
|
82
|
+
* verified — never on a failed backup.
|
|
83
|
+
*/
|
|
84
|
+
export function prunePreUpdateSnapshots({
|
|
85
|
+
folderPath,
|
|
86
|
+
keep = DEFAULT_PRE_UPDATE_KEEP,
|
|
87
|
+
keepPath = null,
|
|
88
|
+
remove = (path) => rmSync(path, { force: true }),
|
|
89
|
+
listDir = () => readdirSync(folderPath),
|
|
90
|
+
statFile = statSync,
|
|
91
|
+
log = () => {},
|
|
92
|
+
} = {}) {
|
|
93
|
+
let names;
|
|
94
|
+
try { names = listDir(); } catch { return { removed: [], kept: [] }; }
|
|
95
|
+
const resolvedKeepPath = keepPath ? resolve(keepPath) : null;
|
|
96
|
+
const items = names
|
|
97
|
+
.filter((name) => SNAPSHOT_NAME.test(name))
|
|
98
|
+
.map((name) => {
|
|
99
|
+
const path = resolve(folderPath, name);
|
|
100
|
+
let mtimeMs = 0;
|
|
101
|
+
try { mtimeMs = statFile(path).mtimeMs; } catch { /* missing between listing and stat: sorts oldest, pruned first */ }
|
|
102
|
+
return { name, path, mtimeMs };
|
|
103
|
+
})
|
|
104
|
+
.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
105
|
+
|
|
106
|
+
const budget = Math.max(0, Number.isInteger(keep) ? keep : DEFAULT_PRE_UPDATE_KEEP);
|
|
107
|
+
const kept = [];
|
|
108
|
+
const toRemove = [];
|
|
109
|
+
for (const item of items) {
|
|
110
|
+
const justWritten = resolvedKeepPath !== null && item.path === resolvedKeepPath;
|
|
111
|
+
if (justWritten || kept.length < budget) kept.push(item.path);
|
|
112
|
+
else toRemove.push(item.path);
|
|
113
|
+
}
|
|
114
|
+
const removed = [];
|
|
115
|
+
for (const path of toRemove) {
|
|
116
|
+
try { remove(path); removed.push(path); log(`removed old pre-update snapshot ${path}`); }
|
|
117
|
+
catch (error) { log(`could not remove old pre-update snapshot ${path}: ${error?.message || error}`); }
|
|
118
|
+
}
|
|
119
|
+
return { removed, kept };
|
|
120
|
+
}
|
|
121
|
+
|
|
59
122
|
function readJson(path) {
|
|
60
123
|
try { return JSON.parse(readFileSync(path, 'utf8')); } catch { return null; }
|
|
61
124
|
}
|
|
@@ -196,8 +259,19 @@ export async function runUpdateSnapshot({
|
|
|
196
259
|
return say({ type: 'done', prepared: true, reused, stale, path: snapshot.path, stamp: snapshot.stamp, sizeBytes: snapshot.sizeBytes ?? null, timings: snapshot.timings ?? null });
|
|
197
260
|
}
|
|
198
261
|
|
|
199
|
-
// Older snapshots
|
|
200
|
-
|
|
262
|
+
// Older pre-update snapshots are pruned now that this one is written and verified (never on
|
|
263
|
+
// the failure path above): the newest `keep` plus the one just made, by the settings
|
|
264
|
+
// mechanism's retention.preUpdateKeep (PRE_UPDATE_KEEP_ENV overrides it) or DEFAULT_PRE_UPDATE_KEEP.
|
|
265
|
+
try {
|
|
266
|
+
let configuredKeep = null;
|
|
267
|
+
try { configuredKeep = service.loadBackupConfig(autoBackupConfigPathFor(dataHome))?.retention?.preUpdateKeep ?? null; } catch { /* the default applies */ }
|
|
268
|
+
prunePreUpdateSnapshots({
|
|
269
|
+
folderPath,
|
|
270
|
+
keep: resolvePreUpdateKeep(configuredKeep),
|
|
271
|
+
keepPath: snapshot.path,
|
|
272
|
+
log: (message) => say({ type: 'progress', phase: 'prune', message }),
|
|
273
|
+
});
|
|
274
|
+
} catch { /* housekeeping never stops an update */ }
|
|
201
275
|
const handoff = {
|
|
202
276
|
version: 1,
|
|
203
277
|
status: 'prepared',
|
package/lib/virustotal.mjs
CHANGED
|
@@ -29,6 +29,8 @@ export function credentials(key = process.env.VIRUSTOTAL_API_KEY) {
|
|
|
29
29
|
return key.trim();
|
|
30
30
|
}
|
|
31
31
|
const safeName = name => name.replace(/[^a-zA-Z0-9_.-]/g, '_');
|
|
32
|
+
// URL objects omit zero counters which the analysis endpoint includes.
|
|
33
|
+
const urlStats = stats => stats && ({ confirmed_timeout: 0, failure: 0, harmless: 0, malicious: 0, suspicious: 0, timeout: 0, type_unsupported: 0, undetected: 0, ...stats });
|
|
32
34
|
export function trustedUrl(value) {
|
|
33
35
|
const url = new URL(value);
|
|
34
36
|
if (url.protocol !== 'https:' || !(url.hostname === 'virustotal.com' || url.hostname.endsWith('.virustotal.com')) || url.username || url.password || (url.port && url.port !== '443')) throw new Error('VirusTotal returned an untrusted upload URL');
|
|
@@ -141,6 +143,15 @@ export class VirusTotal {
|
|
|
141
143
|
if (url.protocol !== 'https:' || url.username || url.password) throw new Error('Website reputation scan requires a public HTTPS URL');
|
|
142
144
|
const subject = url.href; const id = Buffer.from(subject).toString('base64url');
|
|
143
145
|
const deadline = this.now() + this.scanMs;
|
|
146
|
+
const cached = await this.request(`urls/${id}`, { deadline, notFound: true });
|
|
147
|
+
const cachedAttrs = cached?.data?.attributes;
|
|
148
|
+
if (cached && (cachedAttrs?.url !== subject || !/^[a-f0-9]{64}$/.test(cached.data.id))) throw new Error('VirusTotal URL mismatch');
|
|
149
|
+
// Reuse the exact fresh verdict so an owner review survives a retry.
|
|
150
|
+
// New dates or engine findings still change the evidence digest.
|
|
151
|
+
if (cached && this.fresh(cachedAttrs?.last_analysis_date)) {
|
|
152
|
+
return this.evidence({ kind: 'url', name: subject, sha256: createHash('sha256').update(subject).digest('hex'), url: subject },
|
|
153
|
+
urlStats(cachedAttrs.last_analysis_stats), cachedAttrs.last_analysis_results, cachedAttrs.last_analysis_date, 'cached', null, cached.data.id);
|
|
154
|
+
}
|
|
144
155
|
const submitted = await this.request('urls', { method: 'POST', body: new URLSearchParams({ url: subject }), deadline });
|
|
145
156
|
const result = await this.poll(submitted?.data?.id, deadline);
|
|
146
157
|
// Verify the URL object too; do not attribute an analysis to an unrelated URL.
|
|
@@ -148,7 +159,7 @@ export class VirusTotal {
|
|
|
148
159
|
if (object?.data?.attributes?.url !== subject) throw new Error('VirusTotal URL mismatch');
|
|
149
160
|
if (result.meta?.url_info?.url !== subject || !/^[a-f0-9]{64}$/.test(object.data.id)) throw new Error('VirusTotal URL analysis identity mismatch');
|
|
150
161
|
const a = result.data.attributes;
|
|
151
|
-
return this.evidence({ kind: 'url', name: subject, sha256: createHash('sha256').update(subject).digest('hex'), url: subject }, a.stats, a.results, a.date, 'submitted', submitted.data.id, object.data.id);
|
|
162
|
+
return this.evidence({ kind: 'url', name: subject, sha256: createHash('sha256').update(subject).digest('hex'), url: subject }, urlStats(a.stats), a.results, a.date, 'submitted', submitted.data.id, object.data.id);
|
|
152
163
|
}
|
|
153
164
|
evidence(subject, stats, results, date, source, analysisId = null, urlId = null) {
|
|
154
165
|
if (!stats || !results || typeof results !== 'object' || !this.fresh(date)) throw new Error('VirusTotal evidence missing or stale; no verdict available');
|
package/mcp-server/dist/index.js
CHANGED
|
@@ -196,7 +196,7 @@ function initialSelection(options) {
|
|
|
196
196
|
// Create a fully configured McpServer with all tools registered.
|
|
197
197
|
// Used by the HTTP transport (one stateful server per client session): it
|
|
198
198
|
// passes focus on every group and binds each session's own selection at
|
|
199
|
-
// initialize (setServerSelection). Stdio clients (Codex, OpenCode,
|
|
199
|
+
// initialize (setServerSelection). Stdio clients (Codex, OpenCode, Antigravity)
|
|
200
200
|
// read their list from their launch (readInitialTools) through the singleton
|
|
201
201
|
// at the bottom of this file.
|
|
202
202
|
export function createMcpServer(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* provider asked; the caller then uses its deterministic split.
|
|
25
25
|
*/
|
|
26
26
|
import type { JudgeContext } from './memory-judgments.js';
|
|
27
|
-
export declare const BUDGET_PROVIDERS: readonly ["claude-code", "codex", "opencode"];
|
|
27
|
+
export declare const BUDGET_PROVIDERS: readonly ["claude-code", "codex", "opencode", "antigravity"];
|
|
28
28
|
export type BudgetProvider = typeof BUDGET_PROVIDERS[number];
|
|
29
29
|
/** The ordered levels of every provider's question, lowest first. */
|
|
30
30
|
export declare const SHARE_LEVELS: readonly ["None of it: no remaining work is likely to run on this provider, or it cannot run anything now.", "A small part: an occasional task, such as one review or a side task, or only cheap work.", "A moderate part: a regular share of the remaining tasks, alongside the other providers.", "A large part: most of the expensive remaining work, such as the main coding tasks.", "Nearly all of it: practically every remaining dollar is spent on this provider."];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget-judgments.d.ts","sourceRoot":"","sources":["../../src/services/budget-judgments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"budget-judgments.d.ts","sourceRoot":"","sources":["../../src/services/budget-judgments.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,10 +25,12 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { judge, score, readScore } from './typesafe.js';
|
|
27
27
|
import { redactCredentials } from './typesafe-config.js';
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
// Antigravity reports tokens, never prices: the caller never asks about it nor puts it in the state (no budget can
|
|
29
|
+
// hold its spend, so it takes no share), and the questions below keep the wording they were tuned on.
|
|
30
|
+
export const BUDGET_PROVIDERS = ['claude-code', 'codex', 'opencode', 'antigravity'];
|
|
31
|
+
const NAMES = { 'claude-code': 'Claude Code', codex: 'Codex', opencode: 'OpenCode', antigravity: 'Antigravity' };
|
|
30
32
|
/** Question ids (code only; never sent as meaning). */
|
|
31
|
-
const QUESTION_IDS = { 'claude-code': 'share_claude_code', codex: 'share_codex', opencode: 'share_opencode' };
|
|
33
|
+
const QUESTION_IDS = { 'claude-code': 'share_claude_code', codex: 'share_codex', opencode: 'share_opencode', antigravity: 'share_antigravity' };
|
|
32
34
|
/** The ordered levels of every provider's question, lowest first. */
|
|
33
35
|
export const SHARE_LEVELS = [
|
|
34
36
|
'None of it: no remaining work is likely to run on this provider, or it cannot run anything now.',
|