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
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neural-memory-interface",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "neural-memory-interface",
|
|
9
|
-
"version": "2.0
|
|
9
|
+
"version": "2.2.0",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"dependencies": {
|
|
13
|
+
"@agentclientprotocol/sdk": "2.2.0",
|
|
13
14
|
"@anthropic-ai/claude-agent-sdk": "0.3.288",
|
|
14
15
|
"@huggingface/transformers": "^3.0.0",
|
|
15
16
|
"@openai/codex-sdk": "^0.160.0",
|
|
16
|
-
"@opencode-ai/sdk": "1.18.34",
|
|
17
17
|
"@xterm/addon-fit": "0.11.0",
|
|
18
18
|
"@xterm/addon-search": "0.16.0",
|
|
19
19
|
"@xterm/addon-serialize": "0.14.0",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"playwright": "^1.59.1",
|
|
32
32
|
"undici": "^8.5.0",
|
|
33
33
|
"ws": "^8.21.0",
|
|
34
|
+
"yaml": "2.9.1",
|
|
34
35
|
"zod": "^4.4.3"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
@@ -57,6 +58,21 @@
|
|
|
57
58
|
"node": ">=22.19.0"
|
|
58
59
|
}
|
|
59
60
|
},
|
|
61
|
+
"node_modules/@agentclientprotocol/sdk": {
|
|
62
|
+
"version": "2.2.0",
|
|
63
|
+
"resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-2.2.0.tgz",
|
|
64
|
+
"integrity": "sha512-o1+eDQVb05yzPY+5v54awHyONU1oeLsbLVavkwrMQaZDuJDh/38pQiXJS4ix4d6QA3Y4bU0lHFRjwg99KKKSaQ==",
|
|
65
|
+
"license": "Apache-2.0",
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"@modelcontextprotocol/server": "^2.4.0",
|
|
68
|
+
"zod": "^3.25.76 || ^4.0.0"
|
|
69
|
+
},
|
|
70
|
+
"peerDependenciesMeta": {
|
|
71
|
+
"@modelcontextprotocol/server": {
|
|
72
|
+
"optional": true
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
60
76
|
"node_modules/@antfu/install-pkg": {
|
|
61
77
|
"version": "2.1.0",
|
|
62
78
|
"resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz",
|
|
@@ -2205,15 +2221,6 @@
|
|
|
2205
2221
|
"node": ">=18"
|
|
2206
2222
|
}
|
|
2207
2223
|
},
|
|
2208
|
-
"node_modules/@opencode-ai/sdk": {
|
|
2209
|
-
"version": "1.18.34",
|
|
2210
|
-
"resolved": "https://registry.npmjs.org/@opencode-ai/sdk/-/sdk-1.18.34.tgz",
|
|
2211
|
-
"integrity": "sha512-R9QWUpcngtdQ6FCixz7NC6n1WsSho6CEuRUzYHz/CzZcp3miSklDzXkm0oDwXVCnuEu+ANoeM0f6RDp51kOMzQ==",
|
|
2212
|
-
"license": "MIT",
|
|
2213
|
-
"dependencies": {
|
|
2214
|
-
"cross-spawn": "7.0.6"
|
|
2215
|
-
}
|
|
2216
|
-
},
|
|
2217
2224
|
"node_modules/@pkgjs/parseargs": {
|
|
2218
2225
|
"version": "0.11.0",
|
|
2219
2226
|
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
|
|
@@ -6391,6 +6398,21 @@
|
|
|
6391
6398
|
"node": ">=18"
|
|
6392
6399
|
}
|
|
6393
6400
|
},
|
|
6401
|
+
"node_modules/yaml": {
|
|
6402
|
+
"version": "2.9.1",
|
|
6403
|
+
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz",
|
|
6404
|
+
"integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==",
|
|
6405
|
+
"license": "ISC",
|
|
6406
|
+
"bin": {
|
|
6407
|
+
"yaml": "bin.mjs"
|
|
6408
|
+
},
|
|
6409
|
+
"engines": {
|
|
6410
|
+
"node": ">= 14.6"
|
|
6411
|
+
},
|
|
6412
|
+
"funding": {
|
|
6413
|
+
"url": "https://github.com/sponsors/eemeli"
|
|
6414
|
+
}
|
|
6415
|
+
},
|
|
6394
6416
|
"node_modules/zip-stream": {
|
|
6395
6417
|
"version": "6.0.1",
|
|
6396
6418
|
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neural-memory-interface",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Private local SynaBun interface for memory visualization and multi-agent workflows",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"postinstall": "node scripts/rebuild-pty.js && node scripts/build-vendor.mjs"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@agentclientprotocol/sdk": "2.2.0",
|
|
24
25
|
"@anthropic-ai/claude-agent-sdk": "0.3.288",
|
|
25
26
|
"@huggingface/transformers": "^3.0.0",
|
|
26
27
|
"@openai/codex-sdk": "^0.160.0",
|
|
27
|
-
"@opencode-ai/sdk": "1.18.34",
|
|
28
28
|
"@xterm/addon-fit": "0.11.0",
|
|
29
29
|
"@xterm/addon-search": "0.16.0",
|
|
30
30
|
"@xterm/addon-serialize": "0.14.0",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"playwright": "^1.59.1",
|
|
43
43
|
"undici": "^8.5.0",
|
|
44
44
|
"ws": "^8.21.0",
|
|
45
|
+
"yaml": "2.9.1",
|
|
45
46
|
"zod": "^4.4.3"
|
|
46
47
|
},
|
|
47
48
|
"overrides": {
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
<link rel="manifest" href="/manifest.json">
|
|
14
14
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
15
15
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
16
|
-
<link
|
|
16
|
+
<link rel="stylesheet" href="/vendor/caveat/caveat.css">
|
|
17
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
|
|
17
18
|
<link href="https://db.onlinewebfonts.com/c/3284c3a32cf946466fb963369b3c5b2d?family=Disket+Mono" rel="stylesheet">
|
|
18
19
|
<link rel="stylesheet" href="/shared/styles.css">
|
|
19
20
|
<!-- three.js is vendored (scripts/build-vendor.mjs); only the map renderer imports it.
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
<!-- html2canvas for card screenshot MCP tool (vendored: public/vendor/html2canvas/) -->
|
|
60
61
|
<script src="/vendor/html2canvas/html2canvas-1.4.1.min.js" defer></script>
|
|
61
62
|
|
|
63
|
+
<script type="module" src="/shared/page-session.js"></script>
|
|
62
64
|
<script type="module" src="/variant/3d/main.js"></script>
|
|
63
65
|
</body>
|
|
64
66
|
</html>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
|
+
<!-- DEPRECATED: 2D source retained on disk. Old bookmarks redirect to the 3D memory map. -->
|
|
2
3
|
<html lang="en">
|
|
3
4
|
<head>
|
|
4
5
|
<meta charset="UTF-8">
|
|
@@ -13,21 +14,26 @@
|
|
|
13
14
|
<link rel="manifest" href="/manifest.json">
|
|
14
15
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
15
16
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
16
|
-
<link
|
|
17
|
+
<link rel="stylesheet" href="/vendor/caveat/caveat.css">
|
|
18
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
|
|
17
19
|
<link href="https://db.onlinewebfonts.com/c/3284c3a32cf946466fb963369b3c5b2d?family=Disket+Mono" rel="stylesheet">
|
|
18
20
|
<link rel="stylesheet" href="/shared/styles.css">
|
|
19
21
|
<style>
|
|
20
22
|
/* ═══════════════════════════════════════════
|
|
21
23
|
2D VARIANT — Main Canvas
|
|
22
24
|
═══════════════════════════════════════════ */
|
|
25
|
+
/* The graph fills the app frame (styles.css APP FRAME); graph.js sizes its buffer and reads pointers from this box.
|
|
26
|
+
A canvas does not stretch between left and right: its size is written out. */
|
|
23
27
|
#canvas-main {
|
|
24
28
|
position: fixed;
|
|
25
|
-
top:
|
|
26
|
-
width: 100
|
|
29
|
+
top: var(--frame-top); left: var(--frame-left);
|
|
30
|
+
width: calc(100% - var(--sidebar-total-width, 0px) - 2 * var(--frame-gap));
|
|
31
|
+
height: calc(100dvh - var(--frame-top) - var(--frame-gap));
|
|
32
|
+
border-radius: var(--frame-radius);
|
|
27
33
|
z-index: 1;
|
|
28
|
-
cursor:
|
|
34
|
+
cursor: move;
|
|
29
35
|
}
|
|
30
|
-
#canvas-main:active { cursor:
|
|
36
|
+
#canvas-main:active { cursor: move; }
|
|
31
37
|
|
|
32
38
|
/* ═══════════════════════════════════════════
|
|
33
39
|
2D VARIANT — Minimap
|
|
@@ -48,10 +54,10 @@
|
|
|
48
54
|
box-shadow: 0 2px 20px rgba(0,0,0,0.4);
|
|
49
55
|
transition: opacity 0.2s ease;
|
|
50
56
|
opacity: 0; pointer-events: none;
|
|
51
|
-
cursor:
|
|
57
|
+
cursor: move;
|
|
52
58
|
user-select: none;
|
|
53
59
|
}
|
|
54
|
-
#minimap:active { cursor:
|
|
60
|
+
#minimap:active { cursor: move; }
|
|
55
61
|
#minimap.visible { opacity: 1; pointer-events: auto; }
|
|
56
62
|
#minimap-canvas { width: 100%; height: 100%; display: block; }
|
|
57
63
|
#minimap-label {
|
|
@@ -89,8 +95,9 @@
|
|
|
89
95
|
═══════════════════════════════════════════ */
|
|
90
96
|
#lasso-canvas {
|
|
91
97
|
position: fixed;
|
|
92
|
-
top:
|
|
93
|
-
width: 100
|
|
98
|
+
top: var(--frame-top); left: var(--frame-left);
|
|
99
|
+
width: calc(100% - var(--sidebar-total-width, 0px) - 2 * var(--frame-gap));
|
|
100
|
+
height: calc(100dvh - var(--frame-top) - var(--frame-gap));
|
|
94
101
|
z-index: 5;
|
|
95
102
|
pointer-events: none;
|
|
96
103
|
}
|
|
@@ -123,7 +130,8 @@
|
|
|
123
130
|
<div class="ctx-item ctx-item--danger" data-action="trash">Move to Trash</div>
|
|
124
131
|
</div>
|
|
125
132
|
|
|
126
|
-
<!--
|
|
127
|
-
<script type="module" src="/
|
|
133
|
+
<!-- Redirect the deprecated entry point (also works with a static host) -->
|
|
134
|
+
<script type="module" src="/shared/page-session.js"></script>
|
|
135
|
+
<script type="module" src="/shared/retired-2d.js"></script>
|
|
128
136
|
</body>
|
|
129
137
|
</html>
|
|
@@ -1489,9 +1489,9 @@ const wizardState = {
|
|
|
1489
1489
|
// `id` is also the host name of the rules API (/api/setup/rules/:host).
|
|
1490
1490
|
const TOOLS = [
|
|
1491
1491
|
{ id: 'claude', name: 'Claude Code', api: '/api/claude-code/mcp', configPath: '~/.claude.json' },
|
|
1492
|
-
{ id: '
|
|
1492
|
+
{ id: 'antigravity', name: 'Antigravity CLI', api: '/api/setup/antigravity/mcp', configPath: '~/.gemini/config/mcp_config.json' },
|
|
1493
1493
|
{ id: 'codex', name: 'Codex CLI', api: '/api/setup/codex/mcp', configPath: '~/.codex/config.toml' },
|
|
1494
|
-
{ id: 'opencode', name: 'OpenCode', api: '/api/opencode/mcp', configPath: '~/.config/opencode/
|
|
1494
|
+
{ id: 'opencode', name: 'OpenCode', api: '/api/opencode/mcp', configPath: '~/.config/opencode/opencode.json' },
|
|
1495
1495
|
];
|
|
1496
1496
|
|
|
1497
1497
|
// ═══════════════════════════════════════════
|
|
@@ -2636,7 +2636,7 @@ function showToggleRules(id, rules, { connected, wanted }) {
|
|
|
2636
2636
|
else if (rules.path) text = `Rules installed: ${rules.path}`;
|
|
2637
2637
|
} else if (rules && rules.ok !== false && rules.kept && rules.kept.length) {
|
|
2638
2638
|
// Disconnected. A copy the user edited is theirs: SynaBun left it where it is (and for OpenCode, so is a copy
|
|
2639
|
-
// their own line in
|
|
2639
|
+
// their own line in opencode.json points at).
|
|
2640
2640
|
text = `Your ${rules.kept[0].reason === 'listed-in-config' ? '' : 'edited '}rules were left in place: ${rules.kept[0].path}`;
|
|
2641
2641
|
} else if (rules && rules.ok === false && rules.error) {
|
|
2642
2642
|
// Disconnected, but rules could not be taken out (damaged markers, a symlink): say which and why.
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import {
|
|
15
15
|
accountManageModel, accountMenuModel, accountText, apiKeyErrorText, serverAccountId,
|
|
16
16
|
} from './account-view.js';
|
|
17
|
+
import { frameRect } from './app-frame.js';
|
|
17
18
|
|
|
18
19
|
const STYLE_ID = 'account-menu-styles';
|
|
19
20
|
// Values come from the panel's own tokens: Claude's global --t-* / --s-* scale, Codex's --cxp-* scale
|
|
@@ -338,15 +339,17 @@ export function mountAccountMenu({ provider = 'claude', container, before = null
|
|
|
338
339
|
if (!rect.width && !rect.height && trigger.parentElement) rect = trigger.parentElement.getBoundingClientRect();
|
|
339
340
|
const owner = layer?.() || trigger.closest('[class*="panel"]');
|
|
340
341
|
const ownerWidth = owner?.getBoundingClientRect?.().width;
|
|
341
|
-
|
|
342
|
+
// Inside the app frame (app-frame.js; the whole window on a page without it), 8px clear of its edges.
|
|
343
|
+
const f = frameRect();
|
|
344
|
+
popup.style.width = `${Math.max(0, Math.min(320, ownerWidth > 240 ? ownerWidth - 16 : 320, f.width - 16))}px`;
|
|
342
345
|
const width = popup.offsetWidth || 300;
|
|
343
|
-
const left = Math.max(8, Math.min(rect.right - width,
|
|
344
|
-
const below =
|
|
345
|
-
const above = rect.top - 14;
|
|
346
|
+
const left = Math.max(f.left + 8, Math.min(rect.right - width, f.right - width - 8));
|
|
347
|
+
const below = f.bottom - rect.bottom - 14;
|
|
348
|
+
const above = rect.top - f.top - 14;
|
|
346
349
|
const flip = below < 180 && above > below;
|
|
347
350
|
popup.style.maxHeight = `${Math.max(80, Math.min(520, flip ? above : below))}px`;
|
|
348
351
|
popup.style.left = `${Math.round(left)}px`;
|
|
349
|
-
popup.style.top = `${Math.round(flip ? Math.max(8, rect.top - 6 - popup.offsetHeight) : rect.bottom + 6)}px`;
|
|
352
|
+
popup.style.top = `${Math.round(flip ? Math.max(f.top + 8, rect.top - 6 - popup.offsetHeight) : rect.bottom + 6)}px`;
|
|
350
353
|
let z = 201;
|
|
351
354
|
try { z = (parseInt(getComputedStyle(owner).zIndex, 10) || 200) + 1; } catch {}
|
|
352
355
|
popup.style.zIndex = String(z);
|
|
@@ -6,16 +6,36 @@ import { fetchOpencodeProviders, opencodeProviders } from './opencode-providers.
|
|
|
6
6
|
export const CLI_PROFILES = [
|
|
7
7
|
{ id: 'claude-code', label: 'Claude Code', desc: 'Anthropic' },
|
|
8
8
|
{ id: 'codex', label: 'Codex CLI', desc: 'OpenAI' },
|
|
9
|
-
{ id: '
|
|
9
|
+
{ id: 'antigravity', label: 'Antigravity CLI', desc: 'Google' },
|
|
10
10
|
{ id: 'opencode', label: 'OpenCode CLI', desc: 'Multi-provider' },
|
|
11
11
|
];
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
// Google Antigravity replaced the Gemini CLI (provider id `gemini` → `antigravity`). What was saved before
|
|
14
|
+
// (a launch profile, a resume tab, a template's CLI or icon) can still say `gemini`: it reads as Antigravity.
|
|
15
|
+
// The server moves its own files the same way (lib/antigravity/migrate-gemini.js).
|
|
16
|
+
export function migrateProviderId(id) { return id === 'gemini' ? 'antigravity' : id; }
|
|
17
|
+
|
|
18
|
+
// The Gemini CLI's own model ids (gemini-1.x, gemini-2.x) are not Antigravity's: one saved for it reads as
|
|
19
|
+
// none, so Antigravity's default runs (the same rule as isGeminiCliModel in lib/antigravity/migrate-gemini.js).
|
|
20
|
+
const GEMINI_CLI_MODEL_RE = /^gemini-[12](?:[.-]|$)/i;
|
|
21
|
+
export function migrateProviderModel(profileId, model) {
|
|
22
|
+
return migrateProviderId(profileId) === 'antigravity' && typeof model === 'string' && GEMINI_CLI_MODEL_RE.test(model.trim()) ? null : model;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Saved launch records (loop templates, schedules, groups, timers) with a Gemini CLI profile or icon read as Antigravity's. */
|
|
26
|
+
export function migrateLaunchRecords(list) {
|
|
27
|
+
if (!Array.isArray(list)) return list;
|
|
28
|
+
return list.map((record) => {
|
|
29
|
+
if (!record || typeof record !== 'object' || (record.profile !== 'gemini' && record.icon !== 'gemini')) return record;
|
|
30
|
+
const next = { ...record };
|
|
31
|
+
if (next.icon === 'gemini') next.icon = migrateProviderId(next.icon);
|
|
32
|
+
if (next.profile === 'gemini') {
|
|
33
|
+
next.profile = migrateProviderId(next.profile);
|
|
34
|
+
if (migrateProviderModel(next.profile, next.model) !== next.model) next.model = null;
|
|
35
|
+
}
|
|
36
|
+
return next;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
19
39
|
|
|
20
40
|
// Claude Code models are discovered live from the installed CLI via
|
|
21
41
|
// /api/claude/models (see lib/claude-model-catalog.js) — the CLI is the only
|
|
@@ -59,6 +79,15 @@ export const EFFORT_LEVELS_BY_PROFILE = {
|
|
|
59
79
|
{ id: 'max', label: 'Max', desc: 'Maximum' },
|
|
60
80
|
{ id: 'ultra', label: 'Ultra', desc: 'Maximum, with delegation', tier: 'top' },
|
|
61
81
|
],
|
|
82
|
+
// The levels `agy --effort` takes; `off` passes none, so Antigravity uses its own default.
|
|
83
|
+
antigravity: [
|
|
84
|
+
{ id: 'off', label: 'Default', desc: 'Model default' },
|
|
85
|
+
{ id: 'low', label: 'Low', desc: 'Light' },
|
|
86
|
+
{ id: 'medium', label: 'Med', desc: 'Balanced' },
|
|
87
|
+
{ id: 'high', label: 'High', desc: 'Deep' },
|
|
88
|
+
{ id: 'xhigh', label: 'XHigh', desc: 'Very deep' },
|
|
89
|
+
{ id: 'max', label: 'Max', desc: 'Maximum', tier: 'top' },
|
|
90
|
+
],
|
|
62
91
|
};
|
|
63
92
|
|
|
64
93
|
// One effort vocabulary, lowest first (the server keeps the same table in
|
|
@@ -145,11 +174,16 @@ let _opencodeModelsCache = null;
|
|
|
145
174
|
let _opencodeModelsLoading = null;
|
|
146
175
|
let _claudeModelsCache = null;
|
|
147
176
|
let _claudeModelsLoading = null;
|
|
148
|
-
let
|
|
149
|
-
let
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
177
|
+
let _antigravityModelsCache = null;
|
|
178
|
+
let _antigravityModelsLoading = null;
|
|
179
|
+
let _toolCatalog = null;
|
|
180
|
+
const _toolCatalogLoads = new Map();
|
|
181
|
+
const _toolCatalogByCwd = new Map();
|
|
182
|
+
const _toolCatalogAt = new Map();
|
|
183
|
+
let _toolCatalogEpoch = 0;
|
|
184
|
+
|
|
185
|
+
// The verified Claude, Codex and Antigravity lists are also kept in sessionStorage (this tab only): after a reload
|
|
186
|
+
// the pickers paint from them at once (a list read back is due, so the first load still asks the server).
|
|
153
187
|
const LIST_STORE_PREFIX = 'synabun:runtime-models:v1:';
|
|
154
188
|
function keepList(key, list) {
|
|
155
189
|
try { if (typeof sessionStorage !== 'undefined') sessionStorage.setItem(LIST_STORE_PREFIX + key, JSON.stringify(list)); } catch { /* full or unavailable */ }
|
|
@@ -166,6 +200,8 @@ function keptList(key) {
|
|
|
166
200
|
if (claude && !_claudeModelsCache) _claudeModelsCache = claude;
|
|
167
201
|
const codex = keptList('codex:default');
|
|
168
202
|
if (codex && !_codexModelsCache.has('default')) _codexModelsCache.set('default', codex);
|
|
203
|
+
const antigravity = keptList('antigravity');
|
|
204
|
+
if (antigravity && !_antigravityModelsCache) _antigravityModelsCache = antigravity;
|
|
169
205
|
})();
|
|
170
206
|
|
|
171
207
|
function localJsonArray(key) {
|
|
@@ -535,16 +571,59 @@ export async function fetchClaudeModels(force = false) {
|
|
|
535
571
|
return _claudeModelsLoading;
|
|
536
572
|
}
|
|
537
573
|
|
|
574
|
+
// GET /api/antigravity/models answers { models: [{ id, label, description?, default? }], source: 'live' | 'unavailable' }.
|
|
575
|
+
function antigravityModelOption(model) {
|
|
576
|
+
const id = String(model?.id || '').trim();
|
|
577
|
+
if (!id) return null;
|
|
578
|
+
return {
|
|
579
|
+
id,
|
|
580
|
+
provider: 'antigravity',
|
|
581
|
+
cliReady: true,
|
|
582
|
+
label: String(model.label || id),
|
|
583
|
+
desc: String(model.description || ''),
|
|
584
|
+
...(model.default === true ? { tier: 'default', isDefault: true } : {}),
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// Antigravity's models come only from the installed `agy`: there is no list of SynaBun's own to fall back on,
|
|
589
|
+
// so until it answers the pickers are empty and a launch runs Antigravity's default. A list it gave once is
|
|
590
|
+
// kept through a failed or unavailable answer.
|
|
591
|
+
export async function fetchAntigravityModels(force = false) {
|
|
592
|
+
if (!force && _antigravityModelsCache?.length && modelListIsFresh('antigravity')) return _antigravityModelsCache;
|
|
593
|
+
if (_antigravityModelsLoading) return _antigravityModelsLoading;
|
|
594
|
+
_antigravityModelsLoading = (async () => {
|
|
595
|
+
try {
|
|
596
|
+
const resp = await fetch('/api/antigravity/models');
|
|
597
|
+
const data = await resp.json().catch(() => ({}));
|
|
598
|
+
const models = resp.ok && data?.source !== 'unavailable' && Array.isArray(data?.models)
|
|
599
|
+
? data.models.map(antigravityModelOption).filter(Boolean)
|
|
600
|
+
: [];
|
|
601
|
+
if (models.length) {
|
|
602
|
+
_antigravityModelsCache = models;
|
|
603
|
+
_modelListAt.set('antigravity', Date.now());
|
|
604
|
+
keepList('antigravity', models);
|
|
605
|
+
}
|
|
606
|
+
return _antigravityModelsCache || [];
|
|
607
|
+
} catch {
|
|
608
|
+
return _antigravityModelsCache || [];
|
|
609
|
+
} finally {
|
|
610
|
+
_antigravityModelsLoading = null;
|
|
611
|
+
}
|
|
612
|
+
})();
|
|
613
|
+
return _antigravityModelsLoading;
|
|
614
|
+
}
|
|
615
|
+
|
|
538
616
|
// Profiles whose model list is fetched at runtime rather than baked in. Callers use
|
|
539
617
|
// this to decide whether to kick off an async load and re-render when it lands.
|
|
540
618
|
export function isDynamicModelProfile(profileId) {
|
|
541
|
-
return profileId === 'opencode' || profileId === 'codex' || profileId === 'claude-code';
|
|
619
|
+
return profileId === 'opencode' || profileId === 'codex' || profileId === 'claude-code' || profileId === 'antigravity';
|
|
542
620
|
}
|
|
543
621
|
|
|
544
622
|
export async function ensureModelsForProfile(profileId, force = false, accountId = 'default') {
|
|
545
623
|
if (profileId === 'codex') return fetchCodexModels(force, accountId);
|
|
546
624
|
if (profileId === 'opencode') return fetchOpencodeModels(force);
|
|
547
625
|
if (profileId === 'claude-code') return fetchClaudeModels(force);
|
|
626
|
+
if (profileId === 'antigravity') return fetchAntigravityModels(force);
|
|
548
627
|
return getModelsForProfile(profileId, accountId);
|
|
549
628
|
}
|
|
550
629
|
|
|
@@ -562,7 +641,8 @@ export function getModelsForProfile(profileId, accountId = 'default') {
|
|
|
562
641
|
if (profileId === 'codex') return _codexModelsCache.get(String(accountId || 'default')) || [];
|
|
563
642
|
if (profileId === 'opencode') return _opencodeModelsCache || keptOpencodeModels() || [];
|
|
564
643
|
if (profileId === 'claude-code') return _claudeModelsCache || [];
|
|
565
|
-
|
|
644
|
+
if (profileId === 'antigravity') return _antigravityModelsCache || [];
|
|
645
|
+
return [];
|
|
566
646
|
}
|
|
567
647
|
|
|
568
648
|
// Live Claude and Codex options are spawn-ready ids. Only legacy Claude options
|
|
@@ -633,27 +713,40 @@ export function normalizeEffortForProfile(profileId, effort) {
|
|
|
633
713
|
return levels.some(e => e.id === value) ? value : null;
|
|
634
714
|
}
|
|
635
715
|
|
|
636
|
-
export async function
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
716
|
+
export async function fetchToolCatalog(force = false, { cwd = '' } = {}) {
|
|
717
|
+
const key = String(cwd || '');
|
|
718
|
+
if (force) invalidateToolCatalog();
|
|
719
|
+
const epoch = _toolCatalogEpoch;
|
|
720
|
+
if (!force && _toolCatalogAt.get(key) === epoch && _toolCatalogByCwd.has(key)) { _toolCatalog = _toolCatalogByCwd.get(key); return _toolCatalog; }
|
|
721
|
+
if (_toolCatalogLoads.has(key)) return _toolCatalogLoads.get(key);
|
|
722
|
+
const loading = (async () => {
|
|
641
723
|
try {
|
|
642
|
-
const resp = await fetch(
|
|
724
|
+
const resp = await fetch(`/api/mcp/tools${key ? `?cwd=${encodeURIComponent(key)}` : ''}`);
|
|
643
725
|
const data = await resp.json().catch(() => ({}));
|
|
644
|
-
|
|
645
|
-
return
|
|
646
|
-
|
|
647
|
-
return
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
}
|
|
726
|
+
let catalog = resp.ok && data?.ok && Array.isArray(data.groups) ? data : null;
|
|
727
|
+
if (epoch !== _toolCatalogEpoch) return fetchToolCatalog(false, { cwd: key });
|
|
728
|
+
if (catalog) { const previous = _toolCatalogByCwd.get(key); if (previous) catalog = Object.assign(previous, catalog); _toolCatalogByCwd.set(key, catalog); _toolCatalogAt.set(key, epoch); _toolCatalog = catalog; }
|
|
729
|
+
return catalog;
|
|
730
|
+
} catch { return null; }
|
|
731
|
+
finally { if (epoch === _toolCatalogEpoch) _toolCatalogLoads.delete(key); }
|
|
651
732
|
})();
|
|
652
|
-
|
|
733
|
+
_toolCatalogLoads.set(key, loading);
|
|
734
|
+
return loading;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
export function invalidateToolCatalog(change) {
|
|
738
|
+
_toolCatalogEpoch++; _toolCatalogLoads.clear();
|
|
739
|
+
if (change?.name && typeof change.enabled === 'boolean') for (const catalog of _toolCatalogByCwd.values()) {
|
|
740
|
+
const row = catalog.servers?.find(row => row.ref === `mcp:${change.name}`); if (row) row.blocked = !change.enabled;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export function updateCachedToolDefault(tools) {
|
|
745
|
+
if (Array.isArray(tools)) for (const catalog of _toolCatalogByCwd.values()) catalog.defaultTools = [...tools];
|
|
653
746
|
}
|
|
654
747
|
|
|
655
|
-
export function
|
|
656
|
-
return
|
|
748
|
+
export function getCachedToolCatalog(cwd) {
|
|
749
|
+
return cwd === undefined ? _toolCatalog : _toolCatalogByCwd.get(String(cwd || '')) || null;
|
|
657
750
|
}
|
|
658
751
|
|
|
659
752
|
export function clearRuntimeOptionCaches() {
|
|
@@ -662,8 +755,9 @@ export function clearRuntimeOptionCaches() {
|
|
|
662
755
|
_opencodeModelsCache = null;
|
|
663
756
|
opencodeProviders.invalidate('');
|
|
664
757
|
_claudeModelsCache = null;
|
|
758
|
+
_antigravityModelsCache = null;
|
|
665
759
|
_modelListAt.clear();
|
|
666
|
-
|
|
760
|
+
invalidateToolCatalog(); _toolCatalog = null; _toolCatalogByCwd.clear(); _toolCatalogAt.clear();
|
|
667
761
|
_claudeAccountsCache = null;
|
|
668
762
|
_opencodeAgentsCache = null;
|
|
669
763
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════
|
|
2
|
+
// SynaBun — Antigravity panel: a tab's Bypass (no DOM)
|
|
3
|
+
// ═══════════════════════════════════════════
|
|
4
|
+
//
|
|
5
|
+
// Bypass is a tab's choice, like the Claude Code panel's: off by default, turned on only by the owner in the
|
|
6
|
+
// permissions picker (after one confirm each time), saved with the tab, and stated to the bridge with every session
|
|
7
|
+
// the tab opens (`bypass` on session:new / load / resume) and at once for a running one (session:bypass). The bridge
|
|
8
|
+
// answers each permission request of that session "allow once" itself, except what SynaBun's hard rails refuse
|
|
9
|
+
// (lib/antigravity/bypass.js: the browser policy and the protected folders). A server without the `bypass`
|
|
10
|
+
// capability cannot run it: the pick waits there, shown as unavailable, and the tab asks as before.
|
|
11
|
+
|
|
12
|
+
export const PERMISSION_DEFAULT = 'default';
|
|
13
|
+
export const PERMISSION_BYPASS = 'bypass';
|
|
14
|
+
|
|
15
|
+
/** The permissions picker of a tab: its entries, the state the control is styled by and its tooltip. */
|
|
16
|
+
export function bypassControl({ bypass = false, supported = true } = {}, T = (key) => key) {
|
|
17
|
+
const on = bypass === true;
|
|
18
|
+
const entries = [
|
|
19
|
+
{ value: PERMISSION_DEFAULT, label: T('permDefault'), title: T('permDefaultHint'), selected: !on },
|
|
20
|
+
{ value: PERMISSION_BYPASS, label: T('permBypass'), title: supported ? T('permBypassHint') : T('permBypassRestart'), selected: on, disabled: !supported && !on },
|
|
21
|
+
];
|
|
22
|
+
if (on && !supported) return { entries, state: 'bypass', waiting: true, title: T('permBypassWaiting') };
|
|
23
|
+
if (on) return { entries, state: 'bypass', waiting: false, title: T('permBypassOnTitle') };
|
|
24
|
+
return { entries, state: '', waiting: false, title: supported ? T('permDefaultHint') : T('permBypassRestart') };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** What a pick in the picker does: { confirm: true } to ask first, { set: boolean } to apply, or null for no change. */
|
|
28
|
+
export function pickPermission(value, { bypass = false, supported = true } = {}) {
|
|
29
|
+
const want = value === PERMISSION_BYPASS;
|
|
30
|
+
if (want === (bypass === true)) return null;
|
|
31
|
+
if (want && !supported) return null;
|
|
32
|
+
return want ? { confirm: true } : { set: false };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** A saved tab's Bypass: only a literal true counts (anything else in storage is off). */
|
|
36
|
+
export function restoredBypass(value) {
|
|
37
|
+
return value === true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** A permission:auto event as one transcript row: { severity, text }. */
|
|
41
|
+
export function autoAnswerRow(message, T = (key) => key) {
|
|
42
|
+
const tool = String(message?.toolCall?.title || message?.toolCall?.kind || T('permTool')).slice(0, 160);
|
|
43
|
+
if (message?.decision === 'refused') {
|
|
44
|
+
return { severity: 'error', text: T('permAutoRefused', { tool, reason: String(message.reason || '').slice(0, 400) }) };
|
|
45
|
+
}
|
|
46
|
+
return { severity: 'info', text: T('permAutoAllowed', { tool }) };
|
|
47
|
+
}
|