synabun 2.0.10 → 2.2.0
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 +207 -0
- package/README.md +25 -2
- package/THIRD-PARTY-LICENSES.md +22 -0
- package/bin/synabun.js +71 -24
- package/docs/whatsapp.md +13 -13
- package/hooks/claude-code/pre-websearch.mjs +12 -1
- package/hooks/claude-code/shared.mjs +5 -0
- package/hooks/claude-code/stop.mjs +1 -1
- package/lib/claude-hooks.js +172 -18
- package/lib/client-config-repair.js +30 -17
- package/lib/desktop-app.js +7 -1
- package/lib/external-tools.js +7 -6
- package/lib/first-launch-protection.js +57 -12
- package/lib/mcp-dist.js +176 -0
- package/lib/release-npm-ci.mjs +138 -0
- package/lib/release-publish.mjs +91 -0
- package/lib/release-scan.mjs +50 -0
- package/lib/server-crash-record.js +123 -0
- package/lib/server-exit.js +318 -0
- package/lib/server-supervisor.js +508 -0
- package/lib/start-launcher.js +37 -4
- package/lib/tools-cli.js +45 -0
- package/lib/update-snapshot.js +302 -0
- package/lib/virustotal.mjs +203 -0
- package/lib/windows-crash-event.js +269 -0
- package/mcp-server/dist/http.d.ts +20 -1
- package/mcp-server/dist/http.d.ts.map +1 -1
- package/mcp-server/dist/http.js +59 -12
- package/mcp-server/dist/http.js.map +1 -1
- package/mcp-server/dist/index.d.ts +33 -27
- package/mcp-server/dist/index.d.ts.map +1 -1
- package/mcp-server/dist/index.js +128 -143
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/preload.js +1 -1
- package/mcp-server/dist/preload.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/codex-config-heal.d.ts +6 -2
- package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
- package/mcp-server/dist/services/codex-config-heal.js +81 -28
- package/mcp-server/dist/services/codex-config-heal.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-judge-backfill.d.ts +6 -0
- package/mcp-server/dist/services/memory-judge-backfill.d.ts.map +1 -1
- package/mcp-server/dist/services/memory-judge-backfill.js +7 -1
- package/mcp-server/dist/services/memory-judge-backfill.js.map +1 -1
- 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 +18 -11
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js +67 -11
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/server-instructions.d.ts +7 -2
- package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
- package/mcp-server/dist/services/server-instructions.js +22 -63
- package/mcp-server/dist/services/server-instructions.js.map +1 -1
- package/mcp-server/dist/services/tool-catalog.d.ts +120 -0
- package/mcp-server/dist/services/tool-catalog.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-catalog.js +339 -0
- package/mcp-server/dist/services/tool-catalog.js.map +1 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts +12 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.js +40 -0
- package/mcp-server/dist/services/tool-list-refresh-barrier.js.map +1 -0
- package/mcp-server/dist/services/tool-list.d.ts +108 -0
- package/mcp-server/dist/services/tool-list.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-list.js +334 -0
- package/mcp-server/dist/services/tool-list.js.map +1 -0
- package/mcp-server/dist/services/tool-runtime.d.ts +161 -0
- package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -0
- package/mcp-server/dist/services/tool-runtime.js +400 -0
- package/mcp-server/dist/services/tool-runtime.js.map +1 -0
- 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/services/whiteboard-geometry.d.ts +26 -2
- package/mcp-server/dist/services/whiteboard-geometry.d.ts.map +1 -1
- package/mcp-server/dist/services/whiteboard-geometry.js +91 -8
- package/mcp-server/dist/services/whiteboard-geometry.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +14 -14
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +29 -19
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts +3 -3
- 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/image-tools.d.ts +1 -1
- package/mcp-server/dist/tools/image-tools.js +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 +505 -0
- package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/skill-tools.js +642 -0
- package/mcp-server/dist/tools/skill-tools.js.map +1 -0
- package/mcp-server/dist/tools/skill.d.ts +7 -0
- package/mcp-server/dist/tools/skill.d.ts.map +1 -0
- package/mcp-server/dist/tools/skill.js +11 -0
- package/mcp-server/dist/tools/skill.js.map +1 -0
- package/mcp-server/dist/tools/tool-groups.d.ts +68 -0
- package/mcp-server/dist/tools/tool-groups.d.ts.map +1 -0
- package/mcp-server/dist/tools/tool-groups.js +147 -0
- package/mcp-server/dist/tools/tool-groups.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard-format.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-format.js +7 -4
- package/mcp-server/dist/tools/whiteboard-format.js.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +64 -13
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js +30 -5
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/mcp-server/src/http.ts +75 -12
- package/mcp-server/src/index.ts +147 -154
- package/mcp-server/src/preload.ts +12 -12
- package/mcp-server/src/services/budget-judgments.ts +5 -3
- package/mcp-server/src/services/codex-config-heal.ts +80 -29
- package/mcp-server/src/services/identity.ts +2 -2
- package/mcp-server/src/services/memory-judge-backfill.ts +7 -1
- package/mcp-server/src/services/memory-sessions.ts +24 -3
- package/mcp-server/src/services/neural-interface.ts +81 -21
- package/mcp-server/src/services/server-instructions.ts +29 -64
- package/mcp-server/src/services/tool-catalog.ts +403 -0
- package/mcp-server/src/services/tool-list-refresh-barrier.ts +33 -0
- package/mcp-server/src/services/tool-list.ts +410 -0
- package/mcp-server/src/services/tool-runtime.ts +457 -0
- package/mcp-server/src/services/typesafe-config.ts +1 -1
- package/mcp-server/src/services/whiteboard-geometry.ts +94 -9
- package/mcp-server/src/tools/agents.ts +29 -20
- package/mcp-server/src/tools/choice.ts +17 -12
- package/mcp-server/src/tools/git-tools.ts +2 -2
- package/mcp-server/src/tools/image-tools.ts +1 -1
- package/mcp-server/src/tools/morelogin.ts +6 -4
- package/mcp-server/src/tools/skill-tools.ts +592 -0
- package/mcp-server/src/tools/skill.ts +13 -0
- package/mcp-server/src/tools/tool-groups.ts +164 -0
- package/mcp-server/src/tools/whiteboard-format.ts +9 -3
- package/mcp-server/src/tools/whiteboard-tools.ts +39 -5
- package/neural-interface/i18n/en.json +3953 -228
- package/neural-interface/i18n/pt-BR.json +3901 -179
- 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 +128 -28
- package/neural-interface/lib/assistant-brains/antigravity.js +423 -0
- package/neural-interface/lib/assistant-brains/claude.js +4 -3
- package/neural-interface/lib/assistant-brains/codex-browser-policy-hook.mjs +12 -2
- package/neural-interface/lib/assistant-brains/codex-route-gate-hook.mjs +32 -9
- package/neural-interface/lib/assistant-brains/codex.js +9 -5
- package/neural-interface/lib/assistant-brains/opencode.js +120 -54
- package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +28 -13
- package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +59 -19
- 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 +81 -15
- package/neural-interface/lib/assistant-config.js +6 -3
- package/neural-interface/lib/assistant-dispatch.js +1073 -200
- package/neural-interface/lib/assistant-envelope.js +156 -2
- 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 +93 -19
- package/neural-interface/lib/assistant-plan-permissions.js +25 -9
- package/neural-interface/lib/assistant-route-gate-codex.js +3 -0
- package/neural-interface/lib/assistant-route-gate.js +6 -4
- package/neural-interface/lib/assistant-router.js +245 -38
- package/neural-interface/lib/assistant-runtime.js +214 -30
- package/neural-interface/lib/assistant-task-prompt.js +87 -21
- package/neural-interface/lib/assistant-tools.js +51 -0
- package/neural-interface/lib/assistant-usage.js +29 -0
- package/neural-interface/lib/backup-service.js +626 -4
- package/neural-interface/lib/backup-zip-reader.js +10 -5
- package/neural-interface/lib/backup-zip-writer.js +257 -0
- package/neural-interface/lib/browser-execution.js +10 -2
- package/neural-interface/lib/browser-guard-cdp.js +84 -0
- package/neural-interface/lib/browser-network-guard.js +476 -0
- package/neural-interface/lib/browser-policy-roots.js +64 -0
- package/neural-interface/lib/browser-tool-policy.js +198 -38
- package/neural-interface/lib/claude-agent-bridge.js +11 -2
- package/neural-interface/lib/claude-history-cache.js +210 -0
- package/neural-interface/lib/claude-hooks-status.js +103 -0
- package/neural-interface/lib/claude-model-catalog.js +5 -1
- package/neural-interface/lib/claude-temporary.js +5 -11
- package/neural-interface/lib/cli-install-api.js +1 -1
- package/neural-interface/lib/cli-install.js +163 -154
- package/neural-interface/lib/cli-resolver.js +13 -3
- package/neural-interface/lib/cli-update-planner.js +52 -41
- package/neural-interface/lib/cloudflared/tunnel.js +42 -2
- package/neural-interface/lib/codex-mcp-approvals.js +11 -0
- package/neural-interface/lib/codex-rollout-reader.js +52 -0
- package/neural-interface/lib/codex-worker-app-server.js +191 -0
- package/neural-interface/lib/confined-fs.js +30 -3
- package/neural-interface/lib/crash-notice-api.js +98 -0
- package/neural-interface/lib/editor-completion-opencode.js +68 -68
- package/neural-interface/lib/editor-git-api.js +3 -20
- package/neural-interface/lib/exec-loop-command.js +13 -10
- 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/http-guards.js +8 -2
- package/neural-interface/lib/install-details.js +4 -1
- package/neural-interface/lib/mcp-agent-servers.js +67 -0
- package/neural-interface/lib/mcp-client-config.js +35 -33
- package/neural-interface/lib/mcp-external-servers.js +332 -0
- package/neural-interface/lib/mcp-installer.js +2 -1
- package/neural-interface/lib/{mcp-profile-refresh-coordinator.js → mcp-tools-refresh-coordinator.js} +4 -4
- package/neural-interface/lib/memory-session-capture.js +17 -3
- package/neural-interface/lib/morelogin.js +177 -25
- package/neural-interface/lib/native-loop-providers.js +965 -66
- package/neural-interface/lib/native-loop-runtime.js +290 -42
- package/neural-interface/lib/opencode-config.js +557 -0
- package/neural-interface/lib/opencode-db-schema.js +17 -34
- package/neural-interface/lib/opencode-history.js +48 -218
- package/neural-interface/lib/opencode-mcp-ready.js +108 -0
- package/neural-interface/lib/opencode-native-boundary.js +53 -0
- package/neural-interface/lib/opencode-protocol.js +249 -112
- package/neural-interface/lib/opencode-runtime-config.js +32 -22
- package/neural-interface/lib/opencode-serve-records.js +39 -21
- package/neural-interface/lib/opencode-v2-client.js +48 -153
- package/neural-interface/lib/opencode-v2-ws-requests.js +36 -210
- package/neural-interface/lib/opencode-worker-data.js +27 -0
- package/neural-interface/lib/opencode2-client.js +73 -37
- package/neural-interface/lib/opencode2-proxy.js +23 -63
- package/neural-interface/lib/opencode2-translate.js +51 -2
- package/neural-interface/lib/owner-authority.js +249 -0
- package/neural-interface/lib/page-session.js +275 -0
- package/neural-interface/lib/path-confine.js +12 -9
- package/neural-interface/lib/peer-identity.js +793 -0
- 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 +20 -2
- package/neural-interface/lib/rulesets/api.js +7 -6
- package/neural-interface/lib/rulesets/fs-safe.js +1 -1
- package/neural-interface/lib/rulesets/installer.js +180 -36
- package/neural-interface/lib/rulesets/json-edit.js +1 -1
- package/neural-interface/lib/rulesets/render.js +1 -1
- package/neural-interface/lib/session-cache-builder.js +81 -31
- package/neural-interface/lib/session-title-generator.js +58 -36
- package/neural-interface/lib/skills/api-v2.js +495 -0
- package/neural-interface/lib/skills/bundle.js +418 -0
- package/neural-interface/lib/skills/catalog.js +298 -0
- package/neural-interface/lib/skills/creation-api.js +191 -0
- package/neural-interface/lib/skills/creation-brief.js +247 -0
- package/neural-interface/lib/skills/creation-sources.js +285 -0
- package/neural-interface/lib/skills/creation.js +843 -0
- package/neural-interface/lib/skills/deploy.js +569 -0
- package/neural-interface/lib/skills/digest.js +119 -0
- package/neural-interface/lib/skills/discover.js +111 -0
- package/neural-interface/lib/skills/draft-confinement.js +216 -0
- package/neural-interface/lib/skills/eval-confinement.js +399 -0
- package/neural-interface/lib/skills/eval-sandbox.js +280 -0
- package/neural-interface/lib/skills/eval-trace.js +135 -0
- package/neural-interface/lib/skills/evals-api.js +212 -0
- package/neural-interface/lib/skills/evals.js +1573 -0
- package/neural-interface/lib/skills/export.js +203 -0
- package/neural-interface/lib/skills/frontmatter.js +64 -0
- package/neural-interface/lib/skills/health.js +75 -0
- package/neural-interface/lib/skills/json-edit.js +165 -0
- package/neural-interface/lib/skills/known-bridge-digests.json +441 -0
- package/neural-interface/lib/skills/known-bridges.js +96 -0
- package/neural-interface/lib/skills/library.js +823 -0
- package/neural-interface/lib/skills/local-store.js +21 -0
- package/neural-interface/lib/skills/migration.js +433 -0
- package/neural-interface/lib/skills/operations.js +45 -0
- package/neural-interface/lib/skills/ownership.js +427 -0
- package/neural-interface/lib/skills/packages.js +88 -0
- package/neural-interface/lib/skills/reviews.js +212 -0
- package/neural-interface/lib/skills/revision.js +80 -0
- package/neural-interface/lib/skills/roots.js +269 -0
- package/neural-interface/lib/skills/runtime-checks.js +358 -0
- package/neural-interface/lib/skills/scan-assets.js +252 -0
- package/neural-interface/lib/skills/scan-context.js +26 -0
- package/neural-interface/lib/skills/scan-shell.js +324 -0
- package/neural-interface/lib/skills/scan.js +364 -0
- package/neural-interface/lib/skills/scanners.js +54 -0
- package/neural-interface/lib/skills/service.js +530 -0
- package/neural-interface/lib/skills/telemetry.js +119 -0
- package/neural-interface/lib/sqlite-integrity-worker.js +22 -0
- package/neural-interface/lib/synabun-version.js +1 -1
- package/neural-interface/lib/system-activity.js +1 -1
- package/neural-interface/lib/tool-lists.js +124 -0
- package/neural-interface/lib/whatsapp/brain.js +7 -3
- package/neural-interface/lib/whatsapp/bridge.js +6 -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 +1268 -0
- package/neural-interface/lib/worker-guard-setting.js +56 -0
- package/neural-interface/lib/worker-mcp-channel.js +175 -0
- package/neural-interface/lib/worker-question.js +74 -0
- package/neural-interface/lib/worker-relay-ports.js +227 -0
- package/neural-interface/lib/worker-resume.js +238 -0
- package/neural-interface/lib/worker-sandbox.js +329 -0
- package/neural-interface/package-lock.json +34 -12
- package/neural-interface/package.json +3 -2
- package/neural-interface/public/index.html +3 -1
- package/neural-interface/public/index2d.html +19 -11
- package/neural-interface/public/onboarding.html +3 -3
- package/neural-interface/public/shared/account-menu.js +8 -5
- package/neural-interface/public/shared/agent-runtime-options.js +125 -31
- 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 +1527 -1336
- package/neural-interface/public/shared/app-frame.js +192 -0
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +36 -6
- package/neural-interface/public/shared/assistant/asst-api.js +1 -1
- package/neural-interface/public/shared/assistant/asst-ask-styles.js +270 -0
- package/neural-interface/public/shared/assistant/asst-ask-tail.js +118 -0
- package/neural-interface/public/shared/assistant/asst-ask.js +397 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +105 -44
- package/neural-interface/public/shared/assistant/asst-budget.js +5 -4
- package/neural-interface/public/shared/assistant/asst-control.js +205 -26
- package/neural-interface/public/shared/assistant/asst-followups-card.js +383 -0
- package/neural-interface/public/shared/assistant/asst-followups.js +417 -0
- package/neural-interface/public/shared/assistant/asst-hosts.js +16 -7
- package/neural-interface/public/shared/assistant/asst-limit-dock.js +45 -0
- package/neural-interface/public/shared/assistant/asst-limit-wait.js +327 -0
- package/neural-interface/public/shared/assistant/asst-limit.js +168 -0
- package/neural-interface/public/shared/assistant/asst-mascot.js +49 -12
- package/neural-interface/public/shared/assistant/asst-menu.js +7 -6
- package/neural-interface/public/shared/assistant/asst-panel.js +151 -19
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +66 -49
- package/neural-interface/public/shared/assistant/asst-render.js +445 -82
- package/neural-interface/public/shared/assistant/asst-route.js +304 -53
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +9 -8
- package/neural-interface/public/shared/assistant/asst-scenes.js +56 -1
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +117 -10
- package/neural-interface/public/shared/assistant/asst-slash.js +17 -9
- package/neural-interface/public/shared/assistant/asst-state.js +87 -24
- package/neural-interface/public/shared/assistant/asst-stop.js +127 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +93 -21
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +190 -23
- package/neural-interface/public/shared/assistant/asst-usage.js +2 -1
- package/neural-interface/public/shared/automation-context.js +5 -2
- package/neural-interface/public/shared/cc-dropdown.js +89 -19
- package/neural-interface/public/shared/cdx/cdx-context-menu.js +10 -9
- package/neural-interface/public/shared/cdx/cdx-copy.js +16 -0
- package/neural-interface/public/shared/cdx/cdx-output-model.js +22 -1
- package/neural-interface/public/shared/cdx/cdx-output.js +34 -10
- package/neural-interface/public/shared/cdx/cdx-panel.js +59 -151
- package/neural-interface/public/shared/cdx/cdx-preview.js +12 -0
- package/neural-interface/public/shared/cdx/cdx-protocol.js +39 -11
- package/neural-interface/public/shared/cdx/cdx-render.js +57 -38
- package/neural-interface/public/shared/cdx/cdx-requests.js +14 -4
- package/neural-interface/public/shared/cdx/cdx-skill-hints.js +54 -0
- package/neural-interface/public/shared/cdx/cdx-styles.js +15 -3
- package/neural-interface/public/shared/cdx/cdx-tabs.js +127 -44
- package/neural-interface/public/shared/cdx/cdx-ws.js +0 -1
- package/neural-interface/public/shared/cli-install-controller.js +218 -0
- package/neural-interface/public/shared/cli-install-view.js +11 -12
- package/neural-interface/public/shared/cli-status.js +11 -10
- package/neural-interface/public/shared/constants.js +5 -4
- package/neural-interface/public/shared/context-menu-areas.js +34 -0
- package/neural-interface/public/shared/context-menu-logic.js +243 -0
- package/neural-interface/public/shared/context-menu-model.js +367 -0
- package/neural-interface/public/shared/context-menu.js +372 -0
- package/neural-interface/public/shared/cp/cp-context-menu.js +10 -9
- 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/crash-notice-view.js +168 -0
- 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 +21 -0
- package/neural-interface/public/shared/editor/editor-panel-logic.js +2 -2
- 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 +30 -15
- package/neural-interface/public/shared/i18n.js +2 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-approvals.js +7 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-binding.js +4 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-changes-logic.js +3 -101
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +2 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-compact-button.js +1 -3
- package/neural-interface/public/shared/ocp-v2/ocp-v2-composer-logic.js +2 -6
- package/neural-interface/public/shared/ocp-v2/ocp-v2-context-menu.js +11 -11
- package/neural-interface/public/shared/ocp-v2/ocp-v2-context-model.js +0 -3
- package/neural-interface/public/shared/ocp-v2/ocp-v2-events.js +8 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-manager.js +7 -7
- package/neural-interface/public/shared/ocp-v2/ocp-v2-outcome-notifications.js +16 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +74 -259
- package/neural-interface/public/shared/ocp-v2/ocp-v2-plan.js +1 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +95 -202
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +13 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +13 -22
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +4 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-session-actions.js +8 -61
- package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +2 -91
- package/neural-interface/public/shared/ocp-v2/ocp-v2-slash-hints.js +16 -15
- package/neural-interface/public/shared/ocp-v2/ocp-v2-state.js +8 -21
- package/neural-interface/public/shared/ocp-v2/ocp-v2-status-logic.js +1 -99
- package/neural-interface/public/shared/ocp-v2/ocp-v2-status.js +5 -35
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +17 -21
- package/neural-interface/public/shared/ocp-v2/{ocp-v2-profile-inheritance.js → ocp-v2-tools-inheritance.js} +16 -16
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +60 -50
- package/neural-interface/public/shared/page-session.js +96 -0
- package/neural-interface/public/shared/provider-icons.js +4 -2
- package/neural-interface/public/shared/registry.js +5 -3
- package/neural-interface/public/shared/retired-2d.js +3 -0
- package/neural-interface/public/shared/schedules-view.js +195 -61
- package/neural-interface/public/shared/settings/settings-claude-hooks.js +135 -0
- package/neural-interface/public/shared/settings/settings-data.js +3 -1
- package/neural-interface/public/shared/settings/settings-ia.js +6 -6
- package/neural-interface/public/shared/settings/settings-opencode.js +89 -0
- package/neural-interface/public/shared/settings/settings-rules.js +2 -2
- package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +265 -0
- package/neural-interface/public/shared/settings/settings-skill-folders.js +130 -0
- package/neural-interface/public/shared/settings/settings-worker-guard.js +72 -0
- 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-args.js +96 -0
- package/neural-interface/public/shared/skills/ss-creation.js +222 -0
- package/neural-interface/public/shared/skills/ss-dialog.js +133 -0
- package/neural-interface/public/shared/skills/ss-doc.js +173 -0
- package/neural-interface/public/shared/skills/ss-eval-adapters.js +269 -0
- package/neural-interface/public/shared/skills/ss-eval-grade.js +359 -0
- package/neural-interface/public/shared/skills/ss-eval-optimise.js +153 -0
- package/neural-interface/public/shared/skills/ss-eval-plan.js +315 -0
- package/neural-interface/public/shared/skills/ss-evals.js +417 -0
- package/neural-interface/public/shared/skills/ss-form.js +159 -0
- package/neural-interface/public/shared/skills/ss-frontmatter.js +376 -0
- package/neural-interface/public/shared/skills/ss-ids.js +32 -0
- package/neural-interface/public/shared/skills/ss-lint.js +149 -0
- package/neural-interface/public/shared/skills/ss-presets.js +117 -0
- package/neural-interface/public/shared/skills/ss-profiles.js +513 -0
- package/neural-interface/public/shared/skills/ss-resources.js +165 -0
- package/neural-interface/public/shared/skills/ss-review-view.js +190 -0
- package/neural-interface/public/shared/skills/ss-tabs.js +79 -0
- package/neural-interface/public/shared/skills/ss-unicode.js +135 -0
- package/neural-interface/public/shared/skills/studio/sx-actions.js +222 -0
- package/neural-interface/public/shared/skills/studio/sx-cm.js +101 -0
- package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +749 -0
- package/neural-interface/public/shared/skills/studio/sx-create-ai.js +237 -0
- package/neural-interface/public/shared/skills/studio/sx-create-view.js +254 -0
- package/neural-interface/public/shared/skills/studio/sx-create.js +126 -0
- package/neural-interface/public/shared/skills/studio/sx-diff-view.js +43 -0
- package/neural-interface/public/shared/skills/studio/sx-diff.js +133 -0
- package/neural-interface/public/shared/skills/studio/sx-docs.js +480 -0
- package/neural-interface/public/shared/skills/studio/sx-dom.js +230 -0
- package/neural-interface/public/shared/skills/studio/sx-edit-view.js +848 -0
- package/neural-interface/public/shared/skills/studio/sx-editor-model.js +193 -0
- package/neural-interface/public/shared/skills/studio/sx-errors.js +22 -0
- 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-geometry.js +82 -0
- package/neural-interface/public/shared/skills/studio/sx-import.js +262 -0
- package/neural-interface/public/shared/skills/studio/sx-inspector.js +308 -0
- package/neural-interface/public/shared/skills/studio/sx-install-flow.js +282 -0
- package/neural-interface/public/shared/skills/studio/sx-install.js +313 -0
- package/neural-interface/public/shared/skills/studio/sx-library-view.js +748 -0
- package/neural-interface/public/shared/skills/studio/sx-library.js +479 -0
- package/neural-interface/public/shared/skills/studio/sx-main.js +690 -0
- package/neural-interface/public/shared/skills/studio/sx-operations-view.js +98 -0
- package/neural-interface/public/shared/skills/studio/sx-operations.js +11 -0
- package/neural-interface/public/shared/skills/studio/sx-plan.js +158 -0
- package/neural-interface/public/shared/skills/studio/sx-publish-view.js +621 -0
- package/neural-interface/public/shared/skills/studio/sx-review-view.js +369 -0
- package/neural-interface/public/shared/skills/studio/sx-review.js +148 -0
- package/neural-interface/public/shared/skills/studio/sx-scan.js +35 -0
- package/neural-interface/public/shared/skills/studio/sx-snippets.js +96 -0
- package/neural-interface/public/shared/skills/studio/sx-subject.js +249 -0
- package/neural-interface/public/shared/skills/studio/sx-test-view.js +994 -0
- package/neural-interface/public/shared/skills/studio/sx-test.js +328 -0
- package/neural-interface/public/shared/skills/studio/sx-versions-view.js +241 -0
- package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +426 -0
- package/neural-interface/public/shared/state.js +1 -1
- package/neural-interface/public/shared/streaming-markdown.js +58 -0
- package/neural-interface/public/shared/styleguide/sg-panel.js +4 -2
- package/neural-interface/public/shared/styles.css +1822 -1756
- package/neural-interface/public/shared/synabun-mascot.js +1115 -9
- package/neural-interface/public/shared/text-cache.js +29 -0
- package/neural-interface/public/shared/tool-list-picker.js +55 -0
- package/neural-interface/public/shared/tool-list-storage.js +24 -0
- package/neural-interface/public/shared/tool-list-view.js +112 -0
- package/neural-interface/public/shared/topright-overflow-logic.js +54 -0
- package/neural-interface/public/shared/tour/tour-actor.js +268 -0
- package/neural-interface/public/shared/tour/tour-beats.js +336 -0
- package/neural-interface/public/shared/tour/tour-engine.js +884 -0
- package/neural-interface/public/shared/tour/tour-ink.js +390 -0
- package/neural-interface/public/shared/tour/tour-stage.js +440 -0
- package/neural-interface/public/shared/tour/tour-state.js +40 -0
- package/neural-interface/public/shared/tour/tour-tips.js +99 -0
- package/neural-interface/public/shared/tour/tour.css +144 -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 +111 -140
- package/neural-interface/public/shared/ui-claude-panel.js +376 -82
- package/neural-interface/public/shared/ui-cli-banner.js +23 -167
- package/neural-interface/public/shared/ui-command-runner.js +6 -3
- package/neural-interface/public/shared/ui-context-menu.js +295 -0
- package/neural-interface/public/shared/ui-cost-widget.js +57 -59
- package/neural-interface/public/shared/ui-crash-notice.js +187 -0
- package/neural-interface/public/shared/ui-detail.js +15 -3
- 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-image-gallery.js +50 -47
- package/neural-interface/public/shared/ui-judgments.js +1 -1
- package/neural-interface/public/shared/ui-keybinds.js +33 -2
- package/neural-interface/public/shared/ui-link.js +3 -3
- package/neural-interface/public/shared/ui-menubar.js +10 -20
- package/neural-interface/public/shared/ui-native-loop-router-state.js +5 -0
- package/neural-interface/public/shared/ui-native-loop-router.js +11 -1
- package/neural-interface/public/shared/ui-navbar.js +49 -24
- package/neural-interface/public/shared/ui-notifications.js +1 -0
- package/neural-interface/public/shared/ui-panels.js +96 -65
- package/neural-interface/public/shared/ui-resume.js +9 -7
- package/neural-interface/public/shared/ui-schedules-studio.js +546 -431
- package/neural-interface/public/shared/ui-scroll-follow.js +16 -5
- package/neural-interface/public/shared/ui-sessions.js +27 -15
- package/neural-interface/public/shared/ui-settings.js +683 -526
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +9 -2
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +4 -4
- package/neural-interface/public/shared/ui-sidepanel-state.js +23 -12
- package/neural-interface/public/shared/ui-sidepanel-tray.js +48 -7
- package/neural-interface/public/shared/ui-sidepanel-windows.js +18 -13
- package/neural-interface/public/shared/ui-skills.js +33 -2830
- package/neural-interface/public/shared/ui-styleguide.js +5 -2
- package/neural-interface/public/shared/ui-sync.js +15 -5
- package/neural-interface/public/shared/ui-terminal.js +270 -190
- package/neural-interface/public/shared/ui-tool-updates.js +6 -4
- package/neural-interface/public/shared/ui-tooltip.js +81 -51
- package/neural-interface/public/shared/ui-topright-overflow.js +233 -0
- package/neural-interface/public/shared/ui-trash.js +6 -4
- package/neural-interface/public/shared/ui-tutorial-layout.js +3 -117
- package/neural-interface/public/shared/ui-tutorial-preview.js +103 -0
- package/neural-interface/public/shared/ui-tutorial-steps.js +3 -65
- package/neural-interface/public/shared/ui-tutorial.css +47 -100
- package/neural-interface/public/shared/ui-tutorial.js +285 -509
- package/neural-interface/public/shared/ui-update.js +38 -2
- package/neural-interface/public/shared/ui-whiteboard.js +312 -59
- package/neural-interface/public/shared/ui-worker-end.js +5 -1
- package/neural-interface/public/shared/ui-workspaces.js +3 -2
- package/neural-interface/public/shared/view-variant.js +66 -0
- package/neural-interface/public/shared/whatsapp/wa-view.js +3 -3
- package/neural-interface/public/shared/whiteboard-list.js +172 -0
- package/neural-interface/public/shared/worker-end.js +10 -3
- package/neural-interface/public/shared/worker-questions.js +34 -0
- package/neural-interface/public/shared/worker-restart.js +12 -0
- package/neural-interface/public/sidepanel-session.html +2 -2
- package/neural-interface/public/variant/2d/background.js +2 -1
- package/neural-interface/public/variant/2d/context-menu.js +8 -2
- package/neural-interface/public/variant/2d/graph.js +42 -20
- package/neural-interface/public/variant/2d/hulls.js +14 -9
- package/neural-interface/public/variant/2d/lasso.js +11 -7
- package/neural-interface/public/variant/2d/main.js +32 -1
- package/neural-interface/public/variant/2d/minimap.js +11 -13
- package/neural-interface/public/variant/3d/main.js +69 -6
- package/neural-interface/public/variant/3d/map-controls.js +24 -9
- package/neural-interface/public/vendor/caveat/OFL.txt +93 -0
- package/neural-interface/public/vendor/caveat/caveat-latin-400-normal.woff2 +0 -0
- package/neural-interface/public/vendor/caveat/caveat-latin-700-normal.woff2 +0 -0
- package/neural-interface/public/vendor/caveat/caveat.css +17 -0
- package/neural-interface/public/vendor/caveat/manifest.json +12 -0
- package/neural-interface/public/vendor/yaml/LICENSE +13 -0
- package/neural-interface/public/vendor/yaml/manifest.json +4 -0
- package/neural-interface/public/vendor/yaml/yaml-2.9.1.min.js +137 -0
- package/neural-interface/scripts/build-vendor.mjs +32 -0
- package/neural-interface/server.js +4553 -2855
- package/neural-interface/templates/rulesets/README.md +1 -1
- package/neural-interface/templates/rulesets/core.md +1 -1
- package/neural-interface/templates/rulesets/legacy-hashes.json +23 -5
- package/neural-interface/templates/rulesets/manifest.json +8 -8
- package/npm-shrinkwrap.json +34 -12
- package/package.json +17 -3
- package/postinstall.js +9 -4
- package/preuninstall.js +1 -1
- package/setup.js +97 -322
- package/skills/skill-forge/SKILL.md +177 -0
- package/skills/skill-forge/evals/evals.json +54 -0
- package/skills/skill-forge/references/package.md +105 -0
- package/skills/skill-forge/references/review-and-recovery.md +63 -0
- package/skills/skill-forge/references/runtime-profiles.md +20 -0
- package/skills/skill-forge/references/sources-and-capabilities.md +51 -0
- package/skills/synabun/SKILL.md +10 -7
- package/skills/synabun/modules/audit.md +1 -5
- package/skills/synabun/modules/changelog.md +1 -5
- package/skills/synabun/modules/idea.md +1 -1
- package/skills/synabun/modules/memorize.md +6 -9
- package/skills/synabun/modules/schedule.md +6 -6
- package/mcp-server/dist/services/profiles.d.ts +0 -120
- package/mcp-server/dist/services/profiles.d.ts.map +0 -1
- package/mcp-server/dist/services/profiles.js +0 -387
- package/mcp-server/dist/services/profiles.js.map +0 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +0 -97
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +0 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js +0 -228
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +0 -1
- package/mcp-server/dist/tools/leonardo.d.ts +0 -13
- package/mcp-server/dist/tools/leonardo.d.ts.map +0 -1
- package/mcp-server/dist/tools/leonardo.js +0 -21
- package/mcp-server/dist/tools/leonardo.js.map +0 -1
- package/mcp-server/dist/tools/profile.d.ts +0 -17
- package/mcp-server/dist/tools/profile.d.ts.map +0 -1
- package/mcp-server/dist/tools/profile.js +0 -114
- package/mcp-server/dist/tools/profile.js.map +0 -1
- package/mcp-server/src/services/profiles.ts +0 -428
- package/mcp-server/src/tools/leonardo-browser-tools.ts +0 -291
- package/mcp-server/src/tools/leonardo.ts +0 -30
- package/mcp-server/src/tools/profile.ts +0 -122
- package/neural-interface/lib/assistant-brains/opencode-browser-policy.js +0 -47
- package/neural-interface/lib/assistant-brains/opencode-route-gate.js +0 -62
- package/neural-interface/lib/mcp-profile-servers.js +0 -120
- package/neural-interface/public/shared/ui-tutorial-draw.js +0 -311
- package/skills/leonardo/SKILL.md +0 -168
- package/skills/leonardo/icon.svg +0 -1
- package/skills/leonardo/modules/browser-guide.md +0 -378
- package/skills/leonardo/modules/image-prompter.md +0 -283
- package/skills/leonardo/modules/model-advisor.md +0 -100
- package/skills/leonardo/modules/prompt-library.md +0 -110
- package/skills/leonardo/modules/style-guide.md +0 -186
- package/skills/leonardo/modules/video-prompter.md +0 -317
- /package/neural-interface/templates/rulesets/{gemini.md → antigravity.md} +0 -0
|
@@ -1030,7 +1030,7 @@ export function wireJudgmentsTab(overlay, { toast = () => {}, initial = null } =
|
|
|
1030
1030
|
return { line: p == null ? '' : flagged(kit.tx('settings.redesign.judgments.pGoalMet', { pct: pct(p) }), p >= knob('loop-goal', 'minConfidence', 0.8)) };
|
|
1031
1031
|
}
|
|
1032
1032
|
function budgetSplitLine(row, answers) {
|
|
1033
|
-
const names = { share_claude_code: 'Claude Code', share_codex: 'Codex', share_opencode: 'OpenCode' };
|
|
1033
|
+
const names = { share_claude_code: 'Claude Code', share_codex: 'Codex', share_opencode: 'OpenCode', share_antigravity: 'Antigravity' };
|
|
1034
1034
|
const parts = Object.entries(names).filter(([key]) => answers[key]?.type === 'score').map(([key, label]) => {
|
|
1035
1035
|
const a = answers[key];
|
|
1036
1036
|
return escapeHtml(kit.tx('settings.redesign.judgments.budgetShareScore', { provider: label, score: num(a.score ?? a.value), confidence: pct(a.confidence) }));
|
|
@@ -12,7 +12,7 @@ const CLI_ICONS = {
|
|
|
12
12
|
assistant: '<svg viewBox="0 0 24 24" fill="currentColor"><rect x="8" y="5.5" width="11" height="5" rx="2.5" transform="rotate(-12 13.5 8)"/><rect x="4.5" y="12.5" width="11" height="5" rx="2.5" transform="rotate(-12 10 15)"/></svg>',
|
|
13
13
|
claude: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z"/></svg>',
|
|
14
14
|
codex: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"/></svg>',
|
|
15
|
-
|
|
15
|
+
antigravity: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 20 12 4l7.5 16"/><path d="M8.2 20a3.8 3.8 0 0 1 7.6 0"/></svg>',
|
|
16
16
|
browser: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><ellipse cx="12" cy="12" rx="4" ry="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M4.5 7h15M4.5 17h15" stroke-width="1"/></svg>',
|
|
17
17
|
youtube: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>',
|
|
18
18
|
};
|
|
@@ -26,7 +26,8 @@ let _recording = null; // { actionId, originalCombo } when recording
|
|
|
26
26
|
let _pendingBindings = null; // working copy during modal editing
|
|
27
27
|
let _modalOpen = false;
|
|
28
28
|
// Actions that were removed ("toggle-toolbar" was "Hide all toolbars"): a saved key for one is dropped on load.
|
|
29
|
-
|
|
29
|
+
// "launch-gemini" became "launch-antigravity" (Antigravity replaced the Gemini CLI): its key carries over first.
|
|
30
|
+
const RETIRED_ACTIONS = ['toggle-toolbar', 'toggle-minimap', 'launch-gemini'];
|
|
30
31
|
|
|
31
32
|
// ── Combo building ──
|
|
32
33
|
|
|
@@ -94,6 +95,31 @@ export function getBinding(actionId) {
|
|
|
94
95
|
return _bindings[actionId] || null;
|
|
95
96
|
}
|
|
96
97
|
|
|
98
|
+
/** The key an action is bound to as a menu shows it, or '' while it has none (the context menu, read at each open). */
|
|
99
|
+
export function getShortcutLabel(actionId) {
|
|
100
|
+
const combo = _bindings[actionId];
|
|
101
|
+
return combo ? comboToDisplay(combo) : '';
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Whether a module registered an action with this id. */
|
|
105
|
+
export function hasAction(actionId) {
|
|
106
|
+
return _actions.has(actionId);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** The action a key press is bound to, or null (a key the user bound stays that action, Shift+F10 included). */
|
|
110
|
+
export function actionForKey(e) {
|
|
111
|
+
const combo = buildCombo(e);
|
|
112
|
+
return (combo && _reverseMap.get(combo)) || null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Run a registered action as its key would. False when nothing registered it. */
|
|
116
|
+
export function runAction(actionId) {
|
|
117
|
+
const handler = _actions.get(actionId);
|
|
118
|
+
if (!handler) return false;
|
|
119
|
+
handler();
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
|
|
97
123
|
// ── Central dispatcher ──
|
|
98
124
|
|
|
99
125
|
function centralKeyHandler(e) {
|
|
@@ -422,6 +448,11 @@ export async function initKeybinds() {
|
|
|
422
448
|
const data = await fetchKeybinds();
|
|
423
449
|
if (data && data.bindings) {
|
|
424
450
|
_bindings = { ...DEFAULT_KEYBINDS, ...data.bindings };
|
|
451
|
+
// A key saved for the Gemini CLI launches Antigravity, unless Antigravity has one of its own
|
|
452
|
+
// (lib/antigravity/migrate-gemini.js migrateKeybinds does the same to the saved file).
|
|
453
|
+
if (Object.hasOwn(data.bindings, 'launch-gemini') && !Object.hasOwn(data.bindings, 'launch-antigravity')) {
|
|
454
|
+
_bindings['launch-antigravity'] = data.bindings['launch-gemini'];
|
|
455
|
+
}
|
|
425
456
|
} else {
|
|
426
457
|
_bindings = { ...DEFAULT_KEYBINDS };
|
|
427
458
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ═══════════════════════════════════════════
|
|
4
4
|
//
|
|
5
5
|
// Floating Link Panel that mediates turn-based conversations
|
|
6
|
-
// between AI agents (Claude Code, Codex,
|
|
6
|
+
// between AI agents (Claude Code, Codex, Antigravity, etc.) via linked
|
|
7
7
|
// terminal sessions. Users can inject messages, control auto-relay,
|
|
8
8
|
// and watch agents collaborate in real-time.
|
|
9
9
|
|
|
@@ -31,7 +31,7 @@ const SVG_COPY = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" str
|
|
|
31
31
|
const PROFILE_META = {
|
|
32
32
|
'claude-code': { label: 'Claude Code', color: '#D4A27F' },
|
|
33
33
|
'codex': { label: 'Codex CLI', color: '#74c7a5' },
|
|
34
|
-
'
|
|
34
|
+
'antigravity': { label: 'Antigravity CLI', color: '#669DF6' },
|
|
35
35
|
'shell': { label: 'Shell', color: '#aaaaaa' },
|
|
36
36
|
'browser': { label: 'Browser', color: '#4fc3f7' },
|
|
37
37
|
};
|
|
@@ -245,7 +245,7 @@ async function _showSetupView() {
|
|
|
245
245
|
<div class="link-panel-empty">
|
|
246
246
|
<div class="link-panel-empty-icon">${SVG_UNLINK}</div>
|
|
247
247
|
<p>Open at least 2 terminal sessions to create a link.</p>
|
|
248
|
-
<p style="opacity:0.5;font-size:12px;">Use the terminal panel to launch Claude Code, Codex, or
|
|
248
|
+
<p style="opacity:0.5;font-size:12px;">Use the terminal panel to launch Claude Code, Codex, or Antigravity.</p>
|
|
249
249
|
</div>
|
|
250
250
|
`;
|
|
251
251
|
return;
|
|
@@ -12,12 +12,12 @@ import { openHelp } from './ui-help.js';
|
|
|
12
12
|
import { armPwaInstallHandoff, initPwaInstall, installGuideUrl, isStandalone, requestPwaInstall } from './pwa-install.js';
|
|
13
13
|
import { registerAction } from './ui-keybinds.js';
|
|
14
14
|
import { isGuest, hasPermission } from './ui-sync.js';
|
|
15
|
-
import { sendToPanel } from './ui-claude-panel.js';
|
|
16
15
|
import { forceCheckToolUpdates, showUpdateToast, TOOL_LABELS } from './ui-tool-updates.js';
|
|
17
16
|
import { forceCheckSynabunUpdate, openSynabunUpdateModal, synabunUpdateSourceLabel } from './ui-update.js';
|
|
18
17
|
import { requestServerRestart } from './ui-loading.js';
|
|
19
18
|
import { desktopBridge, isDesktopApp } from './desktop-bridge.js';
|
|
20
19
|
import { t } from './i18n.js';
|
|
20
|
+
import { frameRect } from './app-frame.js';
|
|
21
21
|
|
|
22
22
|
const $ = (id) => document.getElementById(id);
|
|
23
23
|
|
|
@@ -160,7 +160,7 @@ export function initMenubar() {
|
|
|
160
160
|
'menu-terminal-assistant': 'terminal',
|
|
161
161
|
'menu-terminal-claude': 'terminal',
|
|
162
162
|
'menu-terminal-codex': 'terminal',
|
|
163
|
-
'menu-terminal-
|
|
163
|
+
'menu-terminal-antigravity': 'terminal',
|
|
164
164
|
'menu-terminal-opencode': 'terminal',
|
|
165
165
|
'menu-terminal-shell': 'terminal',
|
|
166
166
|
'menu-terminal-browser': 'browser',
|
|
@@ -221,7 +221,7 @@ function fitDropdown(item) {
|
|
|
221
221
|
dropdown.style.maxHeight = '';
|
|
222
222
|
dropdown.classList.remove('menubar-dropdown--scroll');
|
|
223
223
|
const top = item.getBoundingClientRect().bottom + 14;
|
|
224
|
-
const room = Math.floor(
|
|
224
|
+
const room = Math.floor(frameRect().bottom - top - 12); // down to the app frame's bottom edge
|
|
225
225
|
if (room > 120 && dropdown.scrollHeight > room) {
|
|
226
226
|
dropdown.style.maxHeight = room + 'px';
|
|
227
227
|
dropdown.classList.add('menubar-dropdown--scroll');
|
|
@@ -278,12 +278,6 @@ function wireSubmenus() {
|
|
|
278
278
|
sync();
|
|
279
279
|
});
|
|
280
280
|
window.addEventListener('resize', () => { if (openSub) placeSubmenu(openSub.parent, openSub.panel); });
|
|
281
|
-
// The tour shows a submenu by name (ui-tutorial.js showStage); null closes it.
|
|
282
|
-
on('menubar:submenu', (name) => {
|
|
283
|
-
const row = name ? [...SUBMENUS.keys()].find(r => r.dataset.submenu === name) : null;
|
|
284
|
-
if (row && !row.hidden) openSubmenu(row);
|
|
285
|
-
else closeSubmenu();
|
|
286
|
-
});
|
|
287
281
|
}
|
|
288
282
|
|
|
289
283
|
function openSubmenu(row, { focusFirst = false } = {}) {
|
|
@@ -377,8 +371,9 @@ function submenuEntries(panel) {
|
|
|
377
371
|
.filter(el => !el.hidden && !el.classList.contains('disabled') && getComputedStyle(el).display !== 'none');
|
|
378
372
|
}
|
|
379
373
|
|
|
380
|
-
// Right of the dropdown with its first entry level with the row; on the left when the
|
|
381
|
-
// on the right, and kept inside the
|
|
374
|
+
// Right of the dropdown with its first entry level with the row; on the left when the app frame has no room
|
|
375
|
+
// on the right, and kept inside its right and bottom edges (the menu hangs from the bar, which is outside the
|
|
376
|
+
// frame, so its left stays the window's). The dropdown's laid-out place (offsetTop/Left) is what its
|
|
382
377
|
// drop-in animation does not move, so a submenu opened together with the menu (the tour) lines up too.
|
|
383
378
|
function placeSubmenu(row, panel) {
|
|
384
379
|
const dropdown = row.parentElement, host = panel.parentElement;
|
|
@@ -386,9 +381,10 @@ function placeSubmenu(row, panel) {
|
|
|
386
381
|
const first = submenuEntries(panel)[0];
|
|
387
382
|
const lead = first ? first.getBoundingClientRect().top - panelBox.top : 0;
|
|
388
383
|
const top = dropdown.offsetTop + row.getBoundingClientRect().top - dropdown.getBoundingClientRect().top - lead;
|
|
384
|
+
const f = frameRect();
|
|
389
385
|
let left = dropdown.offsetLeft + dropdown.offsetWidth + SUBMENU_GAP;
|
|
390
|
-
if (hostBox.left + left + panelBox.width >
|
|
391
|
-
const maxTop =
|
|
386
|
+
if (hostBox.left + left + panelBox.width > f.right - VIEWPORT_MARGIN) left = dropdown.offsetLeft - SUBMENU_GAP - panelBox.width;
|
|
387
|
+
const maxTop = f.bottom - VIEWPORT_MARGIN - panelBox.height - hostBox.top;
|
|
392
388
|
panel.style.left = `${Math.max(VIEWPORT_MARGIN - hostBox.left, left)}px`;
|
|
393
389
|
panel.style.top = `${Math.max(VIEWPORT_MARGIN - hostBox.top, Math.min(top, maxTop))}px`;
|
|
394
390
|
}
|
|
@@ -576,7 +572,7 @@ function wireTerminalMenu() {
|
|
|
576
572
|
'menu-terminal-assistant': () => emit('assistant:open'),
|
|
577
573
|
'menu-terminal-claude': () => emit('terminal:open', { profile: 'claude-code' }),
|
|
578
574
|
'menu-terminal-codex': () => emit('terminal:open', { profile: 'codex' }),
|
|
579
|
-
'menu-terminal-
|
|
575
|
+
'menu-terminal-antigravity': () => emit('terminal:open', { profile: 'antigravity' }),
|
|
580
576
|
'menu-terminal-opencode': () => emit('terminal:open', { profile: 'opencode' }),
|
|
581
577
|
'menu-check-cli-updates': async () => {
|
|
582
578
|
const [tools, syn] = await Promise.all([
|
|
@@ -611,7 +607,6 @@ function wireTerminalMenu() {
|
|
|
611
607
|
'menu-terminal-discord': () => emit('browser:open', { url: 'https://discord.com/app' }),
|
|
612
608
|
'menu-terminal-x': () => emit('browser:open', { url: 'https://x.com' }),
|
|
613
609
|
'menu-terminal-whatsapp': () => emit('browser:open', { url: 'https://web.whatsapp.com' }),
|
|
614
|
-
'menu-app-leonardo': () => { emit('browser:open', { url: 'https://app.leonardo.ai' }); emit('leonardo:launch'); },
|
|
615
610
|
'menu-open-styleguide': () => emit('styleguide:open'),
|
|
616
611
|
'menu-command-runner': () => emit('command-runner:open'),
|
|
617
612
|
'menu-terminal-link': () => emit('link:toggle'),
|
|
@@ -645,11 +640,6 @@ function wireTerminalMenu() {
|
|
|
645
640
|
if (el) el.addEventListener('click', () => { closeAll(); handler(); });
|
|
646
641
|
});
|
|
647
642
|
|
|
648
|
-
// Leonardo.AI — open panel with /leonardo skill after browser launches
|
|
649
|
-
on('leonardo:launch', () => {
|
|
650
|
-
setTimeout(() => sendToPanel('/leonardo', { newTab: true, tabLabel: 'Leonardo.AI', autoSubmit: true }), 500);
|
|
651
|
-
});
|
|
652
|
-
|
|
653
643
|
// Keyboard shortcuts: toggle terminal (via central keybinds)
|
|
654
644
|
registerAction('toggle-terminal', () => emit('terminal:toggle'));
|
|
655
645
|
registerAction('toggle-terminal-alt', () => emit('terminal:toggle'));
|
|
@@ -3,6 +3,11 @@ export function isNewerRunDescriptor(next, current, terminalStatuses) {
|
|
|
3
3
|
const nextTerminal = terminalStatuses.has(next.status);
|
|
4
4
|
const currentTerminal = terminalStatuses.has(current.status);
|
|
5
5
|
if (currentTerminal !== nextTerminal) return nextTerminal;
|
|
6
|
+
// A run resumed after a server restart (`resumes` only grows) is newer whatever its version: a crash can lose the
|
|
7
|
+
// last ledger writes, and with them versions a page already saw.
|
|
8
|
+
const nextResumes = Number(next.resumes) || 0;
|
|
9
|
+
const currentResumes = Number(current.resumes) || 0;
|
|
10
|
+
if (nextResumes !== currentResumes) return nextResumes > currentResumes;
|
|
6
11
|
const nextVersion = Number(next.version) || 0;
|
|
7
12
|
const currentVersion = Number(current.version) || 0;
|
|
8
13
|
if (nextVersion !== currentVersion) return nextVersion > currentVersion;
|
|
@@ -2,6 +2,7 @@ import { on } from './state.js';
|
|
|
2
2
|
import { attachClaudeAutomation, detachClaudeAutomation, handleClaudeAutomationEvent } from './ui-claude-panel.js';
|
|
3
3
|
import { attachCodexAutomation, detachCodexAutomation, handleCodexAutomationEvent } from './ui-codex-panel.js';
|
|
4
4
|
import { attachOpenCodeAutomation, detachOpenCodeAutomation } from './ui-opencode-panel-v2.js';
|
|
5
|
+
import { attachAntigravityAutomation, detachAntigravityAutomation, handleAntigravityAutomationEvent } from './ui-antigravity-panel.js';
|
|
5
6
|
import { nativeLoopWindowId } from './ui-native-window-id.js';
|
|
6
7
|
import {
|
|
7
8
|
isNewerRunDescriptor,
|
|
@@ -13,7 +14,10 @@ import {
|
|
|
13
14
|
const DISMISSED_KEY = 'synabun-native-loop-dismissed';
|
|
14
15
|
const CLAIM_TTL_MS = 90_000;
|
|
15
16
|
const TERMINAL_RESTORE_LIMIT = 10;
|
|
17
|
+
// 'suspended' is not among them: a dispatched worker a server restart cut off keeps its tab until the next start
|
|
18
|
+
// resumes it (or ends it as interrupted).
|
|
16
19
|
const TERMINAL_STATUSES = new Set(['completed', 'failed', 'stopped', 'interrupted']);
|
|
20
|
+
const LIVE_STATUSES = new Set(['starting', 'running', 'suspended']);
|
|
17
21
|
const _windowId = nativeLoopWindowId;
|
|
18
22
|
|
|
19
23
|
const _attached = new Map();
|
|
@@ -158,6 +162,7 @@ async function attach(run, focus) {
|
|
|
158
162
|
}
|
|
159
163
|
if (provider === 'codex') return attachCodexAutomation(run, options);
|
|
160
164
|
if (provider === 'opencode') return attachOpenCodeAutomation(run, options);
|
|
165
|
+
if (provider === 'antigravity') return attachAntigravityAutomation(run, options);
|
|
161
166
|
return { ok: false, reason: 'unsupported_provider' };
|
|
162
167
|
}
|
|
163
168
|
|
|
@@ -166,6 +171,7 @@ async function detachProviderRun(runId, provider) {
|
|
|
166
171
|
if (provider === 'claude-code' || provider === 'claude') return await detachClaudeAutomation(runId);
|
|
167
172
|
if (provider === 'codex') return await detachCodexAutomation(runId);
|
|
168
173
|
if (provider === 'opencode') return await detachOpenCodeAutomation(runId);
|
|
174
|
+
if (provider === 'antigravity') return await detachAntigravityAutomation(runId);
|
|
169
175
|
} catch {}
|
|
170
176
|
return false;
|
|
171
177
|
}
|
|
@@ -186,6 +192,7 @@ function deliverProviderEvent(message) {
|
|
|
186
192
|
return handleClaudeAutomationEvent(run.runId, payload);
|
|
187
193
|
}
|
|
188
194
|
if (payload.provider === 'codex') return handleCodexAutomationEvent(run.runId, payload);
|
|
195
|
+
if (payload.provider === 'antigravity') return handleAntigravityAutomationEvent(run.runId, payload);
|
|
189
196
|
} catch {}
|
|
190
197
|
return false;
|
|
191
198
|
}
|
|
@@ -355,7 +362,7 @@ async function reconcileRuns() {
|
|
|
355
362
|
const newestFirst = (data.runs || [])
|
|
356
363
|
.filter(hasIdentity)
|
|
357
364
|
.sort((a, b) => String(b.updatedAt || b.startedAt || '').localeCompare(String(a.updatedAt || a.startedAt || '')));
|
|
358
|
-
const activeRuns = newestFirst.filter((run) =>
|
|
365
|
+
const activeRuns = newestFirst.filter((run) => LIVE_STATUSES.has(run.status));
|
|
359
366
|
const terminalRuns = newestFirst.filter((run) => {
|
|
360
367
|
if (!TERMINAL_STATUSES.has(run.status)) return false;
|
|
361
368
|
if (new Date(run.updatedAt || run.startedAt || 0).getTime() < cutoff) return false;
|
|
@@ -403,6 +410,9 @@ export function initNativeLoopRouter() {
|
|
|
403
410
|
on('sync:sidepanel:run-completed', route);
|
|
404
411
|
on('sync:sidepanel:run-failed', route);
|
|
405
412
|
on('sync:sidepanel:run-stopped', route);
|
|
413
|
+
// The sync socket (re)connected (ui-sync.js 'connected'): after a server restart the runs are read again at once,
|
|
414
|
+
// not at the next 30 s heartbeat, so a tab whose run was suspended sees it resume (or end) as soon as it can.
|
|
415
|
+
on('session:info', () => { scheduleReconcile(); });
|
|
406
416
|
on('sync:sidepanel:provider-event', (message) => {
|
|
407
417
|
// An OpenCode worker's panel streams from its own serve: the sync copy of its tool calls is the Assistant's.
|
|
408
418
|
if (message?.event?.provider === 'opencode') return;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { initDetachedAgentSessions } from './ui-sidepanel-sessions.js';
|
|
2
2
|
// ═══════════════════════════════════════════
|
|
3
3
|
// SynaBun Neural Interface — Navbar
|
|
4
|
-
// Initializes
|
|
4
|
+
// Initializes right-side icon buttons and menubar action buttons. The memory map is 3D only.
|
|
5
5
|
// Menu items (View, Graph, Bookmarks, Layouts) are handled by ui-menubar.js.
|
|
6
6
|
// ═══════════════════════════════════════════
|
|
7
7
|
|
|
8
8
|
import { state, emit, on } from './state.js';
|
|
9
|
-
import { getVariant } from './registry.js';
|
|
10
9
|
import { KEYS } from './constants.js';
|
|
11
10
|
import { storage } from './storage.js';
|
|
12
11
|
import { t } from './i18n.js';
|
|
@@ -16,6 +15,7 @@ import { startTutorial } from './ui-tutorial.js';
|
|
|
16
15
|
import { toggleClaudePanel, isClaudePanelOpen } from './ui-claude-panel.js';
|
|
17
16
|
import { toggleCodexPanel, isCodexPanelOpen } from './ui-codex-panel.js';
|
|
18
17
|
import { toggleOpencodePanel, isOpencodePanelOpen } from './ui-opencode-panel-v2.js';
|
|
18
|
+
import { toggleAntigravityPanel, isAntigravityPanelOpen } from './ui-antigravity-panel.js';
|
|
19
19
|
import { toggleAssistantPanel, isAssistantPanelOpen, initAssistantPanel } from './ui-assistant-panel.js';
|
|
20
20
|
import { initAssistant } from './ui-assistant.js';
|
|
21
21
|
import { toggleSessionMonitor, fetchLoopsForBadge, fetchNotificationsForBadge } from './ui-sessions.js';
|
|
@@ -23,40 +23,21 @@ import { toggleImageGallery } from './ui-image-gallery.js';
|
|
|
23
23
|
import { toggleScheduleQueue } from './ui-schedule-queue.js';
|
|
24
24
|
import { initUpdate } from './ui-update.js';
|
|
25
25
|
import { initToolUpdates } from './ui-tool-updates.js';
|
|
26
|
+
import { initCrashNotice } from './ui-crash-notice.js';
|
|
26
27
|
import { initSidepanelTrayPlaceholders } from './ui-sidepanel-tray.js';
|
|
27
28
|
import { initDesktopTitleBar } from './desktop-titlebar.js';
|
|
29
|
+
import { initToprightOverflow } from './ui-topright-overflow.js';
|
|
28
30
|
|
|
29
31
|
const $ = (id) => document.getElementById(id);
|
|
30
32
|
|
|
31
33
|
export function initNavbar() {
|
|
32
34
|
initDetachedAgentSessions();
|
|
33
|
-
const variant = getVariant() || '3d';
|
|
34
|
-
|
|
35
|
-
// ── View toggle ──
|
|
36
|
-
const nav2d = $('nav-2d-link');
|
|
37
|
-
const nav3d = $('nav-3d-link');
|
|
38
|
-
|
|
39
|
-
const activeLink = variant === '3d' ? nav3d : nav2d;
|
|
40
|
-
const inactiveLink = variant === '3d' ? nav2d : nav3d;
|
|
41
|
-
|
|
42
|
-
if (activeLink) {
|
|
43
|
-
activeLink.addEventListener('click', (e) => e.preventDefault());
|
|
44
|
-
}
|
|
45
|
-
if (inactiveLink) {
|
|
46
|
-
inactiveLink.addEventListener('click', (e) => {
|
|
47
|
-
e.preventDefault();
|
|
48
|
-
if (state.selectedNodeId) {
|
|
49
|
-
sessionStorage.setItem(KEYS.SELECTED_SWITCH, state.selectedNodeId);
|
|
50
|
-
}
|
|
51
|
-
window.location.href = inactiveLink.getAttribute('href');
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
35
|
// ── Claude panel toggle (topright workspace toolbar) ──
|
|
56
36
|
const assistantPanelBtn = $('topright-assistant-panel-btn');
|
|
57
37
|
const claudePanelBtn = $('topright-claude-panel-btn');
|
|
58
38
|
const codexPanelBtn = $('topright-codex-panel-btn');
|
|
59
39
|
const opencodePanelBtn = $('topright-opencode-panel-btn');
|
|
40
|
+
const antigravityPanelBtn = $('topright-antigravity-panel-btn');
|
|
60
41
|
initSidepanelTrayPlaceholders();
|
|
61
42
|
// The Assistant: shared host wiring (terminal tab + sidepanel), then the
|
|
62
43
|
// sidepanel host, which restores its saved tabs as tray pills.
|
|
@@ -84,6 +65,11 @@ export function initNavbar() {
|
|
|
84
65
|
toggle: toggleOpencodePanel,
|
|
85
66
|
button: opencodePanelBtn,
|
|
86
67
|
},
|
|
68
|
+
antigravity: {
|
|
69
|
+
isOpen: isAntigravityPanelOpen,
|
|
70
|
+
toggle: toggleAntigravityPanel,
|
|
71
|
+
button: antigravityPanelBtn,
|
|
72
|
+
},
|
|
87
73
|
};
|
|
88
74
|
|
|
89
75
|
function syncAgentPanelButtons() {
|
|
@@ -135,6 +121,16 @@ export function initNavbar() {
|
|
|
135
121
|
syncAgentPanelButtons();
|
|
136
122
|
});
|
|
137
123
|
}
|
|
124
|
+
if (antigravityPanelBtn) {
|
|
125
|
+
antigravityPanelBtn.addEventListener('click', async (e) => {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
await toggleAgentPanel('antigravity');
|
|
128
|
+
});
|
|
129
|
+
on('antigravity-panel:visibility', (visible) => {
|
|
130
|
+
antigravityPanelBtn.classList.toggle('active', !!visible);
|
|
131
|
+
syncAgentPanelButtons();
|
|
132
|
+
});
|
|
133
|
+
}
|
|
138
134
|
on('claude-panel:visibility', () => syncAgentPanelButtons());
|
|
139
135
|
on('opencode-child:visibility', () => syncAgentPanelButtons());
|
|
140
136
|
|
|
@@ -350,6 +346,33 @@ export function initNavbar() {
|
|
|
350
346
|
});
|
|
351
347
|
}
|
|
352
348
|
|
|
349
|
+
// ── The whiteboard rail toggle (#wb-hide-btn ↔ #toolbar-show-btn) ──
|
|
350
|
+
// Hides the whiteboard tool rail (#wb-toolbar, Focus Mode) behind a SynaBun logo button above the console button
|
|
351
|
+
// (#term-peek-dock). The workspace toolbar and the session pills (#term-minimized-tray) stay. Remembered across reloads.
|
|
352
|
+
const wbRail = $('wb-toolbar');
|
|
353
|
+
const hideBtn = $('wb-hide-btn');
|
|
354
|
+
const showBtn = $('toolbar-show-btn');
|
|
355
|
+
if (wbRail && hideBtn && showBtn) {
|
|
356
|
+
const setRailHidden = (hidden) => {
|
|
357
|
+
wbRail.classList.toggle('wb-rail-hidden', hidden);
|
|
358
|
+
wbRail.toggleAttribute('inert', hidden);
|
|
359
|
+
hideBtn.setAttribute('aria-pressed', String(hidden));
|
|
360
|
+
showBtn.setAttribute('aria-pressed', String(!hidden));
|
|
361
|
+
showBtn.hidden = !hidden;
|
|
362
|
+
};
|
|
363
|
+
setRailHidden(storage.getItem(KEYS.WHITEBOARD_TOOLBAR_HIDDEN) === 'true');
|
|
364
|
+
const toggle = (hidden) => {
|
|
365
|
+
setRailHidden(hidden);
|
|
366
|
+
storage.setItem(KEYS.WHITEBOARD_TOOLBAR_HIDDEN, String(hidden));
|
|
367
|
+
(hidden ? showBtn : hideBtn).focus({ preventScroll: true });
|
|
368
|
+
};
|
|
369
|
+
hideBtn.addEventListener('click', () => toggle(true));
|
|
370
|
+
showBtn.addEventListener('click', () => toggle(false));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// ── One row, always: what does not fit the band goes into the ⋯ menu ──
|
|
374
|
+
initToprightOverflow();
|
|
375
|
+
|
|
353
376
|
// ── Session pills in the row: the whole name is the tooltip ──
|
|
354
377
|
// Laid out in a row, a pill keeps its width on hover (styles.css): widening, it would push the others onto another
|
|
355
378
|
// line under the pointer. A name cut short is read from the tooltip instead; a pill that brings a tooltip of its own
|
|
@@ -380,4 +403,6 @@ export function initNavbar() {
|
|
|
380
403
|
// ── Update alert ──
|
|
381
404
|
initUpdate();
|
|
382
405
|
initToolUpdates();
|
|
406
|
+
// ── The notice after an automatic restart (the server crashed and its supervisor started it again) ──
|
|
407
|
+
initCrashNotice();
|
|
383
408
|
}
|