synabun 2.0.9 → 2.1.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 +115 -0
- package/README.md +25 -2
- package/THIRD-PARTY-LICENSES.md +68 -4
- package/bin/synabun.js +71 -24
- package/docs/whatsapp.md +2 -2
- 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/launcher.mjs +9 -3
- package/lib/claude-hooks.js +172 -18
- package/lib/client-config-repair.js +17 -8
- package/lib/desktop-app.js +7 -1
- package/lib/external-tools.js +1 -1
- 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 +43 -5
- package/lib/tools-cli.js +45 -0
- package/lib/update-snapshot.js +228 -0
- package/lib/virustotal.mjs +192 -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/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/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/neural-interface.d.ts +16 -10
- 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 +20 -62
- 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/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 +10 -10
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +22 -13
- 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/image-tools.d.ts +1 -1
- package/mcp-server/dist/tools/image-tools.js +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 +639 -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/codex-config-heal.ts +80 -29
- package/mcp-server/src/services/memory-judge-backfill.ts +7 -1
- package/mcp-server/src/services/neural-interface.ts +79 -20
- package/mcp-server/src/services/server-instructions.ts +27 -63
- 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/whiteboard-geometry.ts +94 -9
- package/mcp-server/src/tools/agents.ts +22 -14
- package/mcp-server/src/tools/image-tools.ts +1 -1
- package/mcp-server/src/tools/skill-tools.ts +589 -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 +3680 -206
- package/neural-interface/i18n/pt-BR.json +3628 -157
- package/neural-interface/lib/account-usage.js +5 -3
- package/neural-interface/lib/app-controls-api.js +161 -0
- package/neural-interface/lib/assistant-api.js +148 -35
- 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 +122 -44
- package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +59 -0
- package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +97 -0
- package/neural-interface/lib/assistant-catalog.js +23 -9
- package/neural-interface/lib/assistant-dispatch.js +874 -156
- package/neural-interface/lib/assistant-envelope.js +22 -2
- package/neural-interface/lib/assistant-persona.js +80 -11
- package/neural-interface/lib/assistant-plan-permissions.js +10 -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 +13 -8
- package/neural-interface/lib/assistant-runtime.js +183 -26
- package/neural-interface/lib/assistant-task-prompt.js +78 -14
- package/neural-interface/lib/assistant-tools.js +51 -0
- package/neural-interface/lib/backup-service.js +620 -3
- 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 +83 -0
- package/neural-interface/lib/browser-network-guard.js +284 -0
- package/neural-interface/lib/browser-policy-roots.js +64 -0
- package/neural-interface/lib/browser-tool-policy.js +186 -31
- package/neural-interface/lib/claude-agent-bridge.js +4 -2
- package/neural-interface/lib/claude-hooks-status.js +103 -0
- package/neural-interface/lib/claude-model-catalog.js +64 -14
- package/neural-interface/lib/claude-temporary.js +5 -11
- package/neural-interface/lib/cli-install.js +18 -138
- package/neural-interface/lib/cli-resolver.js +4 -1
- package/neural-interface/lib/cli-update-planner.js +32 -31
- package/neural-interface/lib/cloudflared/tunnel.js +42 -2
- package/neural-interface/lib/codex-mcp-approvals.js +11 -0
- package/neural-interface/lib/codex-settings-schema.js +109 -47
- package/neural-interface/lib/codex-worker-app-server.js +172 -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 +164 -67
- package/neural-interface/lib/exec-loop-command.js +4 -1
- package/neural-interface/lib/http-guards.js +8 -2
- package/neural-interface/lib/install-details.js +4 -1
- package/neural-interface/lib/launch-cache.js +293 -0
- package/neural-interface/lib/login-start.js +524 -0
- package/neural-interface/lib/mcp-agent-servers.js +67 -0
- package/neural-interface/lib/mcp-client-config.js +0 -29
- package/neural-interface/lib/mcp-external-servers.js +323 -0
- package/neural-interface/lib/{mcp-profile-refresh-coordinator.js → mcp-tools-refresh-coordinator.js} +4 -4
- package/neural-interface/lib/morelogin.js +30 -0
- package/neural-interface/lib/native-loop-providers.js +565 -50
- package/neural-interface/lib/native-loop-runtime.js +287 -41
- package/neural-interface/lib/opencode-config.js +557 -0
- package/neural-interface/lib/opencode-db-schema.js +58 -0
- package/neural-interface/lib/opencode-history.js +49 -204
- package/neural-interface/lib/opencode-mcp-ready.js +108 -0
- package/neural-interface/lib/opencode-native-boundary.js +44 -0
- package/neural-interface/lib/opencode-protocol.js +310 -0
- package/neural-interface/lib/opencode-provider-view.js +81 -0
- package/neural-interface/lib/opencode-runtime-config.js +32 -15
- package/neural-interface/lib/opencode-serve-records.js +624 -0
- package/neural-interface/lib/opencode-v2-client.js +53 -131
- package/neural-interface/lib/opencode-v2-ws-requests.js +35 -195
- package/neural-interface/lib/opencode-worker-activity.js +229 -0
- package/neural-interface/lib/opencode-worker-data.js +27 -0
- package/neural-interface/lib/opencode2-client.js +796 -0
- package/neural-interface/lib/opencode2-proxy.js +76 -0
- package/neural-interface/lib/opencode2-translate.js +1057 -0
- package/neural-interface/lib/owner-authority.js +249 -0
- package/neural-interface/lib/page-session.js +275 -0
- package/neural-interface/lib/peer-identity.js +763 -0
- package/neural-interface/lib/process-identity.js +361 -0
- package/neural-interface/lib/request-gate.js +17 -2
- package/neural-interface/lib/rulesets/api.js +1 -1
- package/neural-interface/lib/rulesets/fs-safe.js +1 -1
- package/neural-interface/lib/rulesets/installer.js +92 -27
- package/neural-interface/lib/rulesets/json-edit.js +1 -1
- package/neural-interface/lib/session-cache-builder.js +18 -10
- package/neural-interface/lib/session-title-generator.js +58 -18
- 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 +294 -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 +267 -0
- package/neural-interface/lib/skills/creation.js +843 -0
- package/neural-interface/lib/skills/deploy.js +564 -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 +214 -0
- package/neural-interface/lib/skills/eval-confinement.js +397 -0
- package/neural-interface/lib/skills/eval-sandbox.js +280 -0
- package/neural-interface/lib/skills/eval-trace.js +119 -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 +200 -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 +387 -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 +262 -0
- package/neural-interface/lib/skills/runtime-checks.js +355 -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 +522 -0
- package/neural-interface/lib/skills/telemetry.js +113 -0
- package/neural-interface/lib/sqlite-integrity-worker.js +22 -0
- package/neural-interface/lib/style-guide/api.js +4 -3
- package/neural-interface/lib/tool-lists.js +124 -0
- package/neural-interface/lib/untrusted-file-headers.js +27 -0
- package/neural-interface/lib/whatsapp/bridge.js +6 -3
- package/neural-interface/lib/worker-confinement.js +1192 -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-relay-ports.js +227 -0
- package/neural-interface/lib/worker-resume.js +229 -0
- package/neural-interface/lib/worker-sandbox.js +299 -0
- package/neural-interface/package-lock.json +1354 -50
- package/neural-interface/package.json +6 -2
- package/neural-interface/public/index.html +5 -3
- package/neural-interface/public/index2d.html +19 -11
- package/neural-interface/public/onboarding.html +2 -2
- package/neural-interface/public/shared/account-menu.js +8 -5
- package/neural-interface/public/shared/agent-runtime-options.js +76 -16
- 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 +205 -19
- package/neural-interface/public/shared/assistant/asst-api.js +11 -3
- 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 +241 -112
- package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
- package/neural-interface/public/shared/assistant/asst-control.js +157 -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 +49 -2
- package/neural-interface/public/shared/assistant/asst-limit-dock.js +40 -0
- package/neural-interface/public/shared/assistant/asst-limit-wait.js +294 -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 +84 -12
- package/neural-interface/public/shared/assistant/asst-panel.js +303 -44
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +93 -58
- package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
- package/neural-interface/public/shared/assistant/asst-render.js +770 -100
- package/neural-interface/public/shared/assistant/asst-route.js +83 -12
- package/neural-interface/public/shared/assistant/asst-run-stage.js +231 -0
- package/neural-interface/public/shared/assistant/asst-sanitize.js +193 -3
- package/neural-interface/public/shared/assistant/asst-scene-styles.js +273 -0
- package/neural-interface/public/shared/assistant/asst-scenes.js +530 -0
- package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
- package/neural-interface/public/shared/assistant/asst-sidepanel.js +67 -4
- package/neural-interface/public/shared/assistant/asst-slash.js +9 -7
- package/neural-interface/public/shared/assistant/asst-state.js +25 -15
- package/neural-interface/public/shared/assistant/asst-stop.js +127 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +102 -21
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +165 -13
- package/neural-interface/public/shared/automation-context.js +5 -2
- package/neural-interface/public/shared/cc-dropdown.js +550 -0
- 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 +8 -7
- package/neural-interface/public/shared/cdx/cdx-panel.js +58 -150
- package/neural-interface/public/shared/cdx/cdx-protocol.js +28 -1
- package/neural-interface/public/shared/cdx/cdx-render.js +62 -32
- package/neural-interface/public/shared/cdx/cdx-requests.js +3 -3
- 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 +201 -74
- package/neural-interface/public/shared/cdx/cdx-ws.js +0 -1
- package/neural-interface/public/shared/cli-install-view.js +4 -8
- package/neural-interface/public/shared/cli-status.js +2 -2
- package/neural-interface/public/shared/constants.js +2 -2
- 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 +366 -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-markdown.js +4 -57
- package/neural-interface/public/shared/crash-notice-view.js +168 -0
- package/neural-interface/public/shared/data-cache.js +223 -0
- package/neural-interface/public/shared/desktop-bridge.js +11 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +78 -1
- package/neural-interface/public/shared/desktop-titlebar.js +214 -28
- package/neural-interface/public/shared/desktop-update-view.js +35 -5
- package/neural-interface/public/shared/editor/editor-panel-logic.js +2 -2
- package/neural-interface/public/shared/file-links.js +73 -8
- package/neural-interface/public/shared/html-shell.js +78 -86
- package/neural-interface/public/shared/i18n.js +2 -0
- package/neural-interface/public/shared/launch-prefetch.js +59 -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-caps.js +3 -2
- 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 +9 -2
- 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-modelpicker.js +54 -17
- 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 +140 -254
- package/neural-interface/public/shared/ocp-v2/ocp-v2-plan.js +1 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +97 -203
- package/neural-interface/public/shared/ocp-v2/ocp-v2-providers.js +11 -9
- package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +15 -4
- package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -22
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send-logic.js +401 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +20 -13
- 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 +53 -82
- 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 +48 -40
- 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 +205 -62
- package/neural-interface/public/shared/opencode-providers.js +39 -0
- package/neural-interface/public/shared/page-session.js +96 -0
- 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 +452 -0
- package/neural-interface/public/shared/settings/settings-app-pane.js +335 -0
- package/neural-interface/public/shared/settings/settings-app.js +243 -0
- package/neural-interface/public/shared/settings/settings-claude-hooks.js +135 -0
- package/neural-interface/public/shared/settings/settings-data.js +90 -0
- package/neural-interface/public/shared/settings/settings-ia.js +23 -6
- package/neural-interface/public/shared/settings/settings-opencode.js +89 -0
- 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/sidepanel-session-status.js +49 -0
- package/neural-interface/public/shared/skills/ss-args.js +96 -0
- package/neural-interface/public/shared/skills/ss-creation.js +219 -0
- package/neural-interface/public/shared/skills/ss-dialog.js +130 -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 +141 -0
- package/neural-interface/public/shared/skills/ss-presets.js +117 -0
- package/neural-interface/public/shared/skills/ss-profiles.js +475 -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 +236 -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 +229 -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-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 +279 -0
- package/neural-interface/public/shared/skills/studio/sx-install.js +296 -0
- package/neural-interface/public/shared/skills/studio/sx-library-view.js +639 -0
- package/neural-interface/public/shared/skills/studio/sx-library.js +475 -0
- package/neural-interface/public/shared/skills/studio/sx-main.js +681 -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 +248 -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 +425 -0
- package/neural-interface/public/shared/styleguide/sg-panel.js +4 -2
- package/neural-interface/public/shared/styles.css +2065 -2150
- package/neural-interface/public/shared/synabun-mascot.js +1115 -9
- 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/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-assistant.js +27 -5
- package/neural-interface/public/shared/ui-automation-studio.js +155 -152
- package/neural-interface/public/shared/ui-bookmarks.js +2 -1
- package/neural-interface/public/shared/ui-claude-panel.js +153 -13
- package/neural-interface/public/shared/ui-codex-panel.js +1 -0
- 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 +21 -9
- package/neural-interface/public/shared/ui-file-links.js +1 -0
- package/neural-interface/public/shared/ui-image-gallery.js +56 -52
- package/neural-interface/public/shared/ui-invite.js +18 -2
- package/neural-interface/public/shared/ui-keybinds.js +26 -1
- package/neural-interface/public/shared/ui-link.js +9 -9
- package/neural-interface/public/shared/ui-menubar.js +229 -40
- package/neural-interface/public/shared/ui-native-loop-router-state.js +5 -0
- package/neural-interface/public/shared/ui-native-loop-router.js +9 -1
- package/neural-interface/public/shared/ui-navbar.js +4 -24
- package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
- package/neural-interface/public/shared/ui-panels.js +96 -65
- package/neural-interface/public/shared/ui-schedules-studio.js +2267 -953
- package/neural-interface/public/shared/ui-sessions.js +20 -7
- package/neural-interface/public/shared/ui-settings.js +679 -496
- package/neural-interface/public/shared/ui-sidebar.js +4 -4
- package/neural-interface/public/shared/ui-sidepanel-session-entry.js +13 -0
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +56 -5
- package/neural-interface/public/shared/ui-sidepanel-state.js +23 -12
- package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
- package/neural-interface/public/shared/ui-sidepanel-windows.js +16 -11
- package/neural-interface/public/shared/ui-skills.js +42 -2781
- package/neural-interface/public/shared/ui-styleguide.js +5 -2
- package/neural-interface/public/shared/ui-sync.js +22 -5
- package/neural-interface/public/shared/ui-terminal.js +159 -199
- package/neural-interface/public/shared/ui-tool-updates.js +3 -1
- package/neural-interface/public/shared/ui-tooltip.js +10 -5
- package/neural-interface/public/shared/ui-trash.js +14 -5
- 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 -61
- package/neural-interface/public/shared/ui-tutorial.css +47 -100
- package/neural-interface/public/shared/ui-tutorial.js +285 -499
- package/neural-interface/public/shared/ui-update.js +121 -16
- package/neural-interface/public/shared/ui-whiteboard.js +313 -59
- package/neural-interface/public/shared/ui-worker-end.js +4 -0
- 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 +1 -1
- 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-restart.js +12 -0
- package/neural-interface/public/sidepanel-session.html +1 -1
- 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 +36 -2
- package/neural-interface/public/variant/2d/minimap.js +11 -13
- package/neural-interface/public/variant/3d/main.js +72 -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/highlight/LICENSE +29 -0
- package/neural-interface/public/vendor/highlight/github-dark-dimmed-11.12.0.min.css +9 -0
- package/neural-interface/public/vendor/highlight/highlight-11.12.0.min.js +1262 -0
- package/neural-interface/public/vendor/highlight/manifest.json +5 -0
- package/neural-interface/public/vendor/html2canvas/LICENSE +22 -0
- package/neural-interface/public/vendor/html2canvas/html2canvas-1.4.1.min.js +20 -0
- package/neural-interface/public/vendor/html2canvas/manifest.json +4 -0
- package/neural-interface/public/vendor/marked/LICENSE.md +44 -0
- package/neural-interface/public/vendor/marked/manifest.json +4 -0
- package/neural-interface/public/vendor/marked/marked-14.1.4.esm.js +2502 -0
- package/neural-interface/public/vendor/mermaid/LICENSE +21 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-PAR5IXJI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-M7G3SWCO.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-2PNWDENW.mjs +36 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-PUWGUBOA.mjs +129 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-3NLNHZP5.mjs +38 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-2NMSUPJH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-32MCUW2P.mjs +206 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3NPNU5GP.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SMGFRGC.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4CAJECRU.mjs +14 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4OADUZ5Q.mjs +10 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IQCK5RY.mjs +3 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5MVFYWFU.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs +15 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-CLS4B6BI.mjs +168 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-DZP67EKU.mjs +70 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-EICP7K5X.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDY2UAB4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7VHZCWX.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-IJBDOHL6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JFFVMJIA.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JZGDI5JK.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-KD6SPIPN.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NF366YI6.mjs +231 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NUDPKBEF.mjs +32 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-OJINMHTS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Q6NGPIAH.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-QJSWEUOL.mjs +132 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-R7JDMUKV.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RCXAM2GK.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RT4MAWR3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SFMINX4W.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SLDQ463B.mjs +88 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-STOV2HOB.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-TCEHX7R3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VQC2EELJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VRZKL3EH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTHDQ7BV.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VY2OSTJR.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-WUBWJARI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YBMQ5JGJ.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YDMLL4PJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Z6V44ARX.mjs +62 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZJJ7VQJP.mjs +339 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZNLK7HRR.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZQN7UHIL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZS6VBONO.mjs +174 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZUNWM646.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-FGAMPOII.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-AI5RJEK4.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-Q72C2OJ3.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-6OCTWOGG.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-2OOWUY4M.mjs +62 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/dagre-MPVFI544.mjs +4 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-AE4NWXFW.mjs +24 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-BUJID5UG.mjs +41 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-C44CZ5NI.mjs +24 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-EYOLEXXS.mjs +30 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-P7B6PWOJ.mjs +3 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-FTPZ3PV6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-H3ERR26V.mjs +99 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-WKSWQHFS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-YHGXBVSY.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-RWFTB7ED.mjs +292 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-JH2HKYUO.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-MAR6GKOP.mjs +106 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-3TX3OFWW.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-LV547AFH.mjs +2 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-PUJQGNDS.mjs +70 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-EW5QJT4W.mjs +139 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-JSQERAZB.mjs +89 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/katex-CZ4GXH2S.mjs +257 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-VBJCLQLM.mjs +96 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-MKII6P3Y.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-7WILOQTJ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-6B4OPMJ5.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-EFA7CBSB.mjs +39 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-WARVYA7P.mjs +7 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-UPTR3XUL.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-MEFUPFMS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-R5YG2S5D.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-G5QEX2L6.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-H5I2ZRY2.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-5NIQVNLQ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SXREGOKZ.mjs +84 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-VV74M2VP.mjs +40 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-52ZFIFDL.mjs +162 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-FGA5AGYP.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-3QAKPIVI.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-HN2P4RDZ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-QLVP42QD.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-JKPDBFCN.mjs +8 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-GS45XAXW.mjs +120 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-ZRJGANNQ.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-K64VN5AS.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-QIQU2ZRJ.mjs +34 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-D67OWCCH.mjs +1 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-U6YNM66N.mjs +78 -0
- package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-XJAZEDNM.mjs +7 -0
- package/neural-interface/public/vendor/mermaid/manifest.json +4 -0
- package/neural-interface/public/vendor/mermaid/mermaid-11.17.2.esm.min.mjs +14 -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 +116 -3
- package/neural-interface/server.js +4834 -2541
- package/neural-interface/templates/rulesets/core.md +1 -1
- package/neural-interface/templates/rulesets/legacy-hashes.json +18 -0
- package/neural-interface/templates/rulesets/manifest.json +8 -8
- package/npm-shrinkwrap.json +18 -12
- package/package.json +16 -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 +5 -5
- 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/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,118 @@
|
|
|
1
|
+
# SynaBun v.2.1.0
|
|
2
|
+
|
|
3
|
+
SynaBun 2.1.0 adds downloadable release verification reports, improves automated package publishing, and changes Windows clipboard images to explicit paste.
|
|
4
|
+
|
|
5
|
+
## ✨ New
|
|
6
|
+
|
|
7
|
+
- **Release verification reports** — Desktop downloads and the npm package are checked with VirusTotal before publication. Release notes include analysis dates, engine results, file hashes and links to the reports. These results describe the scans and do not guarantee that a download is safe.
|
|
8
|
+
|
|
9
|
+
## 🛠 Fixed
|
|
10
|
+
|
|
11
|
+
- **Automated npm publishing** — The npm package is published from the prepared release and verified against the scanned package before desktop downloads become available. This helps keep package installation and desktop updates on the same release.
|
|
12
|
+
|
|
13
|
+
## ⚙️ Changed
|
|
14
|
+
|
|
15
|
+
- **Explicit clipboard image paste on Windows** — Focus the whiteboard and press Ctrl+V to add a clipboard image. Background clipboard monitoring has been removed; screenshot files in the watched folder still appear automatically. This change addresses a suspected source of antivirus alerts, but resolution of the reported Kaspersky detection has not been confirmed.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# SynaBun v.2.0.121
|
|
20
|
+
|
|
21
|
+
2.0.121 fixes repeated Codex MCP tool approval prompts and keeps automatic approvals aligned with the current session policy.
|
|
22
|
+
|
|
23
|
+
## 🛠 Fixed
|
|
24
|
+
|
|
25
|
+
- **Codex MCP approvals** — Auto-accept handles tool approvals even when Codex omits the tool name, avoiding repeated permission cards. Plan mode and remote read-only sessions continue to apply their restrictions, while questions and authorization prompts still wait for your response.
|
|
26
|
+
- **Assistant routing** — Routing requests no longer need an extra tool permission card when approvals are set to Ask.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# SynaBun v.2.0.12
|
|
31
|
+
|
|
32
|
+
2.0.12 makes Skills Studio easier to install from, test and maintain, keeps dispatched workers running through a server restart, and adds a guided tour of the workspace. It also moves OpenCode support to OpenCode 2 and makes the 3D memory map the default for everyone.
|
|
33
|
+
|
|
34
|
+
## ✨ New
|
|
35
|
+
|
|
36
|
+
- **Skill health and local usage** — Skills Studio shows local evidence of skill use in Claude Code, Codex and OpenCode runs, with native invocations distinguished from inferred reads. Optional periodic checks report integrity and eligibility changes to the Assistant.
|
|
37
|
+
- **A guided workspace tour** — The help button opens a tour on SynaBun's own whiteboard, with pointing arms, handwritten labels and steps that follow the workspace. It supports narrow windows, English and Portuguese, and reduced motion. The handwriting font ships with the app.
|
|
38
|
+
- **Tool lists** — Choose the SynaBun tools and external MCP servers available to a session, worker or automation from reusable tool lists. External server choices report why a requested server cannot be used, with provider context to help recover.
|
|
39
|
+
|
|
40
|
+
## 🛠 Fixed
|
|
41
|
+
|
|
42
|
+
- **Workers resume after a restart** — Dispatched Claude Code, Codex and OpenCode workers can pause during a SynaBun server restart and resume the same run and provider conversation in the same sidepanel tab.
|
|
43
|
+
- **Server crash recovery** — SynaBun restarts a server that crashes and reports the reason. Desktop recovery shows the failure and recovery state, and a stalled Codex title request no longer holds the server open indefinitely.
|
|
44
|
+
- **MoreLogin attachment and cleanup** — Connecting to a MoreLogin profile preserves its native HTTP cache and WebSocket APIs while keeping SynaBun's network guards. Closing a connected browser session also closes the automation tabs SynaBun opened for it, so they do not return on the profile's next start.
|
|
45
|
+
- **Worker startup and permissions** — Codex workers start correctly when external MCP servers are disabled. Protected OpenCode workers receive MCP tools directly with Code Mode disabled, and Codex Plan mode with automatic approvals no longer repeats permission requests in the Assistant.
|
|
46
|
+
- **Claude Code hooks from the desktop** — Hooks work when SynaBun starts from the macOS Dock. Settings shows their actual state and lets you switch them on or off.
|
|
47
|
+
- **Stopping the intended worker** — A request naming one run stops that run. The Assistant's Stop all control requires a second press before it stops every running worker.
|
|
48
|
+
- **Compact activity and app layout** — Activity bubbles use one busy indicator and at most one ellipsis, with long paths and URLs wrapping at separators. Browser tabs and Safari web apps have consistent spacing between the navigation bar and the app frame, and Codex output and tab layout handle narrow panels more reliably.
|
|
49
|
+
|
|
50
|
+
## ⚙️ Changed
|
|
51
|
+
|
|
52
|
+
- **Installing approved skills** — Review approval and installation have clearer, separate states. Publishing an approved skill presents one install decision with readable runtime targets, and Claude Code, Codex and OpenCode share the drafting, evaluation and installation workflow. Skill checks cover more shell wrappers, asset references and command forms while keeping passive references distinct from executable instructions.
|
|
53
|
+
- **OpenCode 2 required** — OpenCode 1 support is removed. Every launch path checks the installed version before starting and explains how to install OpenCode 2 when needed.
|
|
54
|
+
- **One memory map** — The memory map uses 3D. Saved 2D preferences and old links open in 3D, and the 2D switch and shortcut have been removed from the interface.
|
|
55
|
+
- **Project test commands** — Browser policy permits test runners inside registered code projects and accepts syntax-only Node checks. Commands that execute preloaded code still receive the normal policy checks.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
# SynaBun v.2.0.11
|
|
60
|
+
|
|
61
|
+
2.0.11 rebuilds Skills Studio around a skill library: every skill in one list, a workspace to edit, test, version and publish it, native skill folders for Claude Code, Codex and OpenCode, a Review queue, and skills drafted by AI from your own sources. SynaBun's memory is also one command away for any MCP client (`npx -y synabun mcp`), the whole app has a right-click menu, desktop updates show a splash and restart in seconds, and the Schedules window speaks your language.
|
|
62
|
+
|
|
63
|
+
## ✨ New
|
|
64
|
+
|
|
65
|
+
- **Skills Studio 2.0** — Skills Studio is now a window with three places: Library, Review and Create. The Library lists every skill once, whichever tool or account reads it, with where it comes from, what Claude Code, Codex and OpenCode each have of it, and a health badge for what needs a look (problems, an update available, a skill defined twice, an old-style install); filters, saved views, search and bulk actions keep it in order. A skill opens in a workspace with Edit, Test, Versions and Publish: the app's code editor, a form and the YAML kept as one document, the problems each runtime would report, a description helper, the skill's files, a Markdown preview with diagrams, versions with diffs and restore, and an install of exactly the plan you see. The window is not modal, docks beside the side panels, fits narrow widths and works fully from the keyboard, in English and Portuguese.
|
|
66
|
+
- **Native skill folders for Claude Code, Codex and OpenCode** — Installing a skill now puts it in each runtime's own skill folder, with a backup, a check after the install and a way back. Skills installed the old way, as Codex prompts or OpenCode commands, can be moved to the native folders from Settings › Skills › Skill folders: you see the plan first, nothing moves until you press Move, and Undo puts every one back. Nothing is moved at start, during an update or by an agent. The Codex panel runs a skill you pick as a Codex skill, and a skill's arguments are filled in the way Claude Code fills them.
|
|
67
|
+
- **Skills drafted by AI, and a Review queue** — Create's AI box drafts a whole skill from your description and up to five sources: a Claude Code, Codex or OpenCode session, a web page, a registered project, memories, a library skill or an imported bundle. One worker writes it in a folder of its own and can only read and write there; the result is checked, comes with test prompts and lands in Review. While it runs you see its steps, the files written so far, the time and the cost, and you can cancel. The SynaBun Assistant creates and improves skills the same way, with its bundled skill-forge workflow. Whatever an AI makes waits in Review and is installed only after you approve it.
|
|
68
|
+
- **`synabun mcp`** — The npm command now starts SynaBun's MCP server on stdio, for Cursor, Windsurf, Claude Code, Codex or any other MCP client: `"command": "npx", "args": ["-y", "synabun", "mcp"]`, or `"command": "synabun", "args": ["mcp"]` after `npm install -g synabun`. It is the same server, with the same memories and data folder, as the one SynaBun registers for your tools. Only the protocol goes to its output, and it stops when the client that started it stops it.
|
|
69
|
+
- **The official MCP Registry** — The npm package now names SynaBun's entry in the official MCP Registry, `io.github.danilokhury/synabun`, which MCP clients and directories read to find a server and how to start it.
|
|
70
|
+
- **Clickable follow-ups in the Assistant** — When the Assistant ends a turn with options or a question for you, they appear as buttons under its message: one click sends the answer, a set of choices becomes checkboxes with one Send, and Something else… takes you to the composer.
|
|
71
|
+
- **A countdown to a usage-limit reset** — When a provider's usage limit stops the Assistant or one of its workers, a card shows a live countdown to the reset and the local reset time, then Retry now. A worker is retried on the same model.
|
|
72
|
+
- **A right-click menu for the whole app** — A right-click anywhere that has no menu of its own now opens SynaBun's: page actions (Back, Forward, Reload, Copy, Full screen), then what fits what you clicked (selected text, a link, an image, a memory on the map, in the Memory Explorer or on a card, the empty space of the 3D or 2D map, the Focus mode board and its tools), then every panel and tool with its keyboard shortcut. Fields and Shift + right-click keep the browser's menu, and the terminal, the File Explorer's tree, editor tabs and graph cards keep their own. The Menu key and Shift + F10 open it from the keyboard.
|
|
73
|
+
|
|
74
|
+
## 🛠 Fixed
|
|
75
|
+
|
|
76
|
+
- **Skills Studio keeps your work** — The Studio could erase frontmatter it did not show, mark text typed during a save as saved, save one skill's file under another's name, lose unsaved work on Escape or close, rewrite every line ending of a Windows-style file, write into SynaBun's bundled skill, replace or delete a same-named skill SynaBun never installed, and install an imported bundle unseen. Now an edit changes only the field you touched, a save that would overwrite a change made elsewhere asks first, bundled skills are read-only with Customize a copy, a skill SynaBun did not install is backed up and changed only after you confirm, and an import is checked, scanned and shown to you before anything is written.
|
|
77
|
+
- **A complete MCP server build** — SynaBun now checks that its MCP server is built completely, every module it loads and not only its entry file, and builds it again at install or start when something is missing.
|
|
78
|
+
|
|
79
|
+
## ⚙️ Changed
|
|
80
|
+
|
|
81
|
+
- **Desktop updates** — Updating the desktop app no longer leaves you without a window: a small splash with the mascot shows at every start and through every step of an update, with a progress bar and Details. Once an update is downloaded, the update button becomes Restart to update (also in the app menu, the File menu and the tray), which installs at once when SynaBun is idle, or when the running work ends. The safety snapshot of your data is prepared ahead in the background and compared with your data at the restart, so the new version opens in seconds instead of minutes on a large memory store, and every database copy in it passes an integrity check. On a Mac the app is without a window for about a second, and dark pages on some Macs no longer show a lighter band across the middle.
|
|
82
|
+
- **`synabun help`** — `synabun help`, `synabun --help` and `synabun -h` list every command and the data folder in use. Before, they started SynaBun.
|
|
83
|
+
- **Schedules in your language** — The whole Schedules window now follows the app's language: every view, row, editor, dialog and message, schedules described in plain words, and dates and times in your locale. Changing the language with the window open brings you back to the same view.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
# SynaBun v.2.0.10
|
|
88
|
+
|
|
89
|
+
2.0.10 works with OpenCode 2, adds a Settings › App page for updates and start at login, and opens menus, model lists and Settings at once instead of waiting on the network, most noticeably in the Windows desktop app. It also redesigns the Schedules window, shows every worker the Assistant dispatches at work, and closes a security hole in the Codex panel.
|
|
90
|
+
|
|
91
|
+
## ✨ New
|
|
92
|
+
|
|
93
|
+
- **OpenCode 2** — With OpenCode 2 installed, every OpenCode feature in SynaBun failed. SynaBun now works with OpenCode 1 and OpenCode 2 alike: the OpenCode panel, the Assistant's OpenCode brain and workers, schedules, loops and Automation Studio, the code editor's AI autocomplete and session titles. It finds out which one you have and speaks to it accordingly.
|
|
94
|
+
- **Settings › App** — A new page in the SynaBun group of Settings, above About. **Updates** shows your version and the last check, with Check for updates, Install update and an **Automatic updates** switch (on by default). With it off, the desktop app still tells you about an update but downloads and installs nothing until you choose Install now, and an npm or Git install no longer checks on its own. **Start at login** (off by default) works on macOS, Windows and Linux, for the desktop app and for an npm or Git install, and can start SynaBun in the background. The desktop app adds **Keep running when the window closes** (Windows and Linux) and **Hardware acceleration**, and **Maintenance** opens the data or logs folder and restarts SynaBun.
|
|
95
|
+
- **Workers at work in the Assistant panel** — While a worker the Assistant dispatched is queued or running, its card shows a small live scene for the kind of task, its current step and a clock, also after the Assistant's own reply has ended and after a page reload. When the worker finishes, the card says Done, Failed or Stopped.
|
|
96
|
+
- **Remove a session** — Each row of the Assistant's Sessions menu has a remove button. It asks in the row, stops the session's running work and deletes the session; memories made from it are kept.
|
|
97
|
+
|
|
98
|
+
## 🛠 Fixed
|
|
99
|
+
|
|
100
|
+
- **Codex panel security** — The Codex panel put a model's formatted reply into the page as it was, so HTML in a reply, in a quoted web page or in a file the model read could run inside SynaBun. Every Codex message, and every saved Codex and Claude Code transcript, now goes through the same strict filter as the other panels, and text agents write is escaped in the memory, terminal, whiteboard, Skills and Settings views. The Markdown, diagram, code-highlighting and screenshot libraries now ship with SynaBun instead of loading from a CDN, an SVG opened from the image gallery can no longer run anything, and a link whose scheme is hidden behind a tab, a line break or a character entity is no longer treated as a link to a file.
|
|
101
|
+
- **OpenCode only stops its own servers** — SynaBun now stops an OpenCode server only when it can prove that it started that server itself and that the SynaBun which started it has ended. A server left running by a SynaBun that crashed is cleaned up at the next start, your own OpenCode servers are left alone, and starts that happen at once no longer collide. On Windows, servers started through an npm-installed OpenCode are now tracked too.
|
|
102
|
+
- **Questions and approvals that wait on you** — Open OpenCode questions and permissions are read again after a reconnect or a page reload, so a turn's clock no longer runs while it waits on you, and a sub-agent's question keeps its parent waiting. A Codex approval no longer goes missing after a reload. Claude Code and Codex tabs and worker pills show "needs you" while they wait on a permission, a plan approval or a question, and a worker's card says "waiting for your answer".
|
|
103
|
+
- **Minimized session pills** — A minimized session's pill keeps its running animation for as long as the session works, in every provider: while the Assistant's workers run, while a Claude Code tab's background agents or shells run, after a Codex tab reconnects, and for the Assistant in a terminal tab. The way back from an OpenCode sub-agent now stays visible at every panel width, the Codex queue hint follows the tab on screen, and the Assistant's rack redraws right after a resize.
|
|
104
|
+
- **Schedules keep what you did not change** — Saving a schedule or a group could clear settings you never touched, such as a Codex account or a thinking level set to off, and changing a group's CLI could reset schedules that had changed meanwhile. The editors now save only what you changed, a list that fails to load says so instead of showing up empty, a group's new CLI reaches its schedules, and a day theme can be removed.
|
|
105
|
+
- **One update dialog at a time** — Opening the update dialog again from the badge, a notification or Settings no longer draws a second one over the first.
|
|
106
|
+
- **A lighter desktop title bar** — The desktop app no longer measures its title bar after every change on the page, which cost time on every chunk of streamed text and terminal output.
|
|
107
|
+
|
|
108
|
+
## ⚙️ Changed
|
|
109
|
+
|
|
110
|
+
- **Menus, model lists and Settings open at once** — Model lists, provider lists, the Assistant's menus and Settings now open from what SynaBun read last and refresh in the background. In the Windows desktop app the Codex model list could take ten seconds, OpenCode's provider list over a second every time, and the whole server could stall for a few seconds; these lists are now read once at launch and kept between starts.
|
|
111
|
+
- **Assistant sessions are saved with your first message** — Opening the Assistant or a new session no longer stores an empty session, so the Sessions menu no longer fills with empty rows, and a session you close without chatting is not kept.
|
|
112
|
+
- **Schedules** — Schedules has its own button in the menubar, and its window is redesigned: views for Up next, All schedules, Needs attention, Paused, Timers and Activity, your groups beside them, search, rows with an on/off switch, the next and last run side by side, and details when you ask for them. Every dropdown in it is the app's own, with full keyboard support. Games and the 3D map's commands moved into the Apps menu.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
1
116
|
# SynaBun v.2.0.9
|
|
2
117
|
|
|
3
118
|
2.0.9 makes npm installs and updates more reliable, especially on Windows: SynaBun's dependencies are installed in one place at pinned versions, none of them runs its own install script, and the Windows updater closes the SynaBun processes your AI clients started before it replaces the package. A fresh install now starts with no memory categories, Codex on Windows no longer asks for administrator approval when SynaBun starts it, and the Assistant's account menu is easier to read.
|
package/README.md
CHANGED
|
@@ -23,7 +23,26 @@
|
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
|
-
SynaBun
|
|
26
|
+
**SynaBun is an open-source, self-hosted AI workspace and persistent memory MCP server: SynaBun Assistant coordinates Claude Code, Codex and OpenCode agents.** What you decided, fixed and explained in one session is there in the next one, in every project and every tool you connect, so you stop repeating yourself. It all lives in one SQLite file on your computer: no account, no cloud service, no API key.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g synabun
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`synabun` starts the app. `synabun mcp` is the MCP server on stdio, for any MCP client:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"mcpServers": {
|
|
37
|
+
"SynaBun": {
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "synabun", "mcp"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
After the global install, `"command": "synabun", "args": ["mcp"]` runs the same server. Read the [docs](https://synabun.ai/docs), or see how SynaBun [compares](https://synabun.ai/compare) with other memory tools.
|
|
27
46
|
|
|
28
47
|
It connects to Claude Code, Codex CLI, Gemini CLI and OpenCode with one switch each, and to Cursor, Windsurf or any other tool that supports MCP (the Model Context Protocol) with a config snippet you copy. It comes with the Neural Interface, a local web app where you see what your tools remember and run your coding agents.
|
|
29
48
|
|
|
@@ -159,7 +178,7 @@ Everything SynaBun stores is in one folder outside the app: `~/.synabun` on macO
|
|
|
159
178
|
|
|
160
179
|
## Links
|
|
161
180
|
|
|
162
|
-
- [Changelog](./CHANGELOG.md): what is new in 2.0
|
|
181
|
+
- [Changelog](./CHANGELOG.md): what is new in 2.1.0 and before
|
|
163
182
|
- [Security](./SECURITY.md): security model and how to report a vulnerability
|
|
164
183
|
- [Contributing](./CONTRIBUTING.md): bug reports and feature requests are welcome as [issues](https://github.com/danilokhury/Synabun/issues); pull requests are not accepted
|
|
165
184
|
- [Website](https://synabun.ai), [docs](https://synabun.ai/docs) and [blog](https://synabun.ai/blog)
|
|
@@ -174,3 +193,7 @@ You are free to use, modify, and distribute SynaBun under Apache 2.0. Premium fe
|
|
|
174
193
|
## Trademark Notice
|
|
175
194
|
|
|
176
195
|
"SynaBun" is a trademark of its authors. The license does not grant permission to use the SynaBun name, trademarks, service marks, or branding. If you fork this project, you must use a different name for your derivative work.
|
|
196
|
+
|
|
197
|
+
<!-- synabun:verification:start -->
|
|
198
|
+
Package verification: [downloadable VirusTotal reports and SHA-256 hashes](https://github.com/danilokhury/Synabun/releases/latest). Match the report to your exact version and file hash. Reports record engine coverage and analysis dates; they are not a guarantee of safety. Website results describe URL reputation, not a vulnerability audit.
|
|
199
|
+
<!-- synabun:verification:end -->
|
package/THIRD-PARTY-LICENSES.md
CHANGED
|
@@ -59,6 +59,7 @@ runtime dependencies in the published package.
|
|
|
59
59
|
| `playwright` | `^1.59.1` | 1.59.1 | Apache-2.0 | [npm](https://www.npmjs.com/package/playwright) |
|
|
60
60
|
| `undici` | `^8.5.0` | 8.8.0 | MIT | [npm](https://www.npmjs.com/package/undici) |
|
|
61
61
|
| `ws` | `^8.21.0` | 8.21.1 | MIT | [npm](https://www.npmjs.com/package/ws) |
|
|
62
|
+
| `yaml` | `2.9.1` | 2.9.1 | ISC | [npm](https://www.npmjs.com/package/yaml) |
|
|
62
63
|
| `zod` | `^4.4.3` | 4.4.3 | MIT | [npm](https://www.npmjs.com/package/zod) |
|
|
63
64
|
|
|
64
65
|
## Neural Interface Development Dependencies
|
|
@@ -75,9 +76,13 @@ runtime dependencies in the published package.
|
|
|
75
76
|
| `@codemirror/search` | `6.7.2` | 6.7.2 | MIT | [npm](https://www.npmjs.com/package/@codemirror/search) |
|
|
76
77
|
| `@codemirror/state` | `6.7.6` | 6.7.6 | MIT | [npm](https://www.npmjs.com/package/@codemirror/state) |
|
|
77
78
|
| `@codemirror/view` | `6.43.14` | 6.43.14 | MIT | [npm](https://www.npmjs.com/package/@codemirror/view) |
|
|
79
|
+
| `@highlightjs/cdn-assets` | `11.12.0` | 11.12.0 | BSD-3-Clause | [npm](https://www.npmjs.com/package/@highlightjs/cdn-assets) |
|
|
78
80
|
| `@lezer/highlight` | `1.2.5` | 1.2.5 | MIT | [npm](https://www.npmjs.com/package/@lezer/highlight) |
|
|
79
81
|
| `@replit/codemirror-indentation-markers` | `6.5.3` | 6.5.3 | MIT | [npm](https://www.npmjs.com/package/@replit/codemirror-indentation-markers) |
|
|
80
82
|
| `esbuild` | `^0.28.1` | 0.28.1 | MIT | [npm](https://www.npmjs.com/package/esbuild) |
|
|
83
|
+
| `html2canvas` | `1.4.1` | 1.4.1 | MIT | [npm](https://www.npmjs.com/package/html2canvas) |
|
|
84
|
+
| `marked` | `14.1.4` | 14.1.4 | MIT | [npm](https://www.npmjs.com/package/marked) |
|
|
85
|
+
| `mermaid` | `11.17.2` | 11.17.2 | MIT | [npm](https://www.npmjs.com/package/mermaid) |
|
|
81
86
|
| `three` | `0.169.0` | 0.169.0 | MIT | [npm](https://www.npmjs.com/package/three) |
|
|
82
87
|
|
|
83
88
|
## Browser-Delivered and Bundled Components
|
|
@@ -86,10 +91,12 @@ runtime dependencies in the published package.
|
|
|
86
91
|
| --- | --- | --- | --- | --- |
|
|
87
92
|
| xterm.js | 6.0.0 | Bundled browser asset and npm dependency | MIT | [GitHub](https://github.com/xtermjs/xterm.js) |
|
|
88
93
|
| three.js | 0.169.0 | Bundled browser asset (`neural-interface/public/vendor/three/`) built from the npm development dependency | MIT | [GitHub](https://github.com/mrdoob/three.js) |
|
|
89
|
-
| marked | 14.
|
|
90
|
-
| highlight.js | 11.
|
|
91
|
-
| Mermaid | 11.
|
|
92
|
-
| html2canvas | 1.4.1 |
|
|
94
|
+
| marked | 14.1.4 | Bundled browser asset (`neural-interface/public/vendor/marked/`) copied from the npm development dependency | MIT | [GitHub](https://github.com/markedjs/marked) |
|
|
95
|
+
| highlight.js | 11.12.0 | Bundled browser asset (`neural-interface/public/vendor/highlight/`) copied from the npm development dependency `@highlightjs/cdn-assets` | BSD-3-Clause | [GitHub](https://github.com/highlightjs/highlight.js) |
|
|
96
|
+
| Mermaid | 11.17.2 | Bundled browser asset (`neural-interface/public/vendor/mermaid/`) copied from the npm development dependency | MIT | [GitHub](https://github.com/mermaid-js/mermaid) |
|
|
97
|
+
| html2canvas | 1.4.1 | Bundled browser asset (`neural-interface/public/vendor/html2canvas/`) copied from the npm development dependency | MIT | [GitHub](https://github.com/niklasvh/html2canvas) |
|
|
98
|
+
| yaml | 2.9.1 | Bundled browser asset (`neural-interface/public/vendor/yaml/`) built from the npm dependency | ISC | [GitHub](https://github.com/eemeli/yaml) |
|
|
99
|
+
| Caveat (font) | 5.3.0 (`@fontsource/caveat`) | Bundled browser asset (`neural-interface/public/vendor/caveat/`): the Latin 400 and 700 WOFF2 files, copied unmodified with the package's license | OFL-1.1 | [GitHub](https://github.com/googlefonts/caveat) |
|
|
93
100
|
|
|
94
101
|
### CodeMirror 6
|
|
95
102
|
|
|
@@ -114,6 +121,62 @@ Brought in by those, and in the bundle too (MIT, Copyright (C) Marijn Haverbeke
|
|
|
114
121
|
- the Lezer parser runtime and grammars: `@lezer/common`, `@lezer/lr`, `@lezer/cpp`, `@lezer/css`, `@lezer/go`, `@lezer/html`, `@lezer/java`, `@lezer/javascript`, `@lezer/json`, `@lezer/markdown`, `@lezer/php`, `@lezer/python`, `@lezer/rust`, `@lezer/sass`, `@lezer/xml`, `@lezer/yaml`
|
|
115
122
|
- `style-mod`, `w3c-keyname`, `crelt` and `@marijn/find-cluster-break`
|
|
116
123
|
|
|
124
|
+
### marked
|
|
125
|
+
|
|
126
|
+
The Markdown parser of the Assistant and the Claude, Codex and OpenCode panels. Its own browser build (`lib/marked.esm.js`), copied by `neural-interface/scripts/build-vendor.mjs` into `neural-interface/public/vendor/marked/` with the package's `LICENSE.md`.
|
|
127
|
+
|
|
128
|
+
- **Version:** 14.1.4
|
|
129
|
+
- **License:** MIT (the license file also carries the BSD-style notice of the original Markdown.pl, Copyright © 2004 John Gruber)
|
|
130
|
+
- **Copyright:** Copyright (c) 2018+, MarkedJS; Copyright (c) 2011-2018, Christopher Jeffrey
|
|
131
|
+
- **URL:** https://github.com/markedjs/marked
|
|
132
|
+
|
|
133
|
+
### mermaid
|
|
134
|
+
|
|
135
|
+
The diagrams of the Skills preview. Its own browser build (`dist/mermaid.esm.min.mjs` and the chunks it imports), copied by `neural-interface/scripts/build-vendor.mjs` into `neural-interface/public/vendor/mermaid/` with the package's `LICENSE`.
|
|
136
|
+
|
|
137
|
+
- **Version:** 11.17.2
|
|
138
|
+
- **License:** MIT
|
|
139
|
+
- **Copyright:** Copyright (c) 2014 - 2022 Knut Sveidqvist
|
|
140
|
+
- **URL:** https://github.com/mermaid-js/mermaid
|
|
141
|
+
|
|
142
|
+
Mermaid's build bundles its own dependencies, each under its own license: MIT (`@braintree/sanitize-url`, `@iconify/utils`, `@mermaid-js/parser`, `@upsetjs/venn.js`, `cytoscape`, `cytoscape-cose-bilkent`, `cytoscape-fcose`, `cose-base`, `layout-base`, `dagre-d3-es`, `dayjs`, `es-toolkit`, `katex`, `khroma`, `lodash-es`, `marked` 16, `roughjs` and its path helpers, `stylis`, `ts-dedent`, `uuid`), ISC (`d3` 7 and its `d3-*` modules, `internmap`, `delaunator`), BSD-3-Clause (`d3-sankey`, `d3-ease`, `rw` and the older `d3-array`, `d3-shape`, `d3-path` it brings), Apache-2.0 (`@chevrotain/types`), MPL-2.0 or Apache-2.0 (`dompurify`, used here under Apache-2.0) and the Unlicense (`robust-predicates`).
|
|
143
|
+
|
|
144
|
+
### highlight.js
|
|
145
|
+
|
|
146
|
+
The Codex panel's code-block highlighting. The official browser build of the version whose stylesheet the panel loaded before (`@highlightjs/cdn-assets`: `highlight.min.js` and `styles/github-dark-dimmed.min.css`; the `highlight.js` package itself ships no browser build), copied by `neural-interface/scripts/build-vendor.mjs` into `neural-interface/public/vendor/highlight/` with the package's `LICENSE`.
|
|
147
|
+
|
|
148
|
+
- **Version:** 11.12.0
|
|
149
|
+
- **License:** BSD-3-Clause
|
|
150
|
+
- **Copyright:** Copyright (c) 2006, Ivan Sagalaev; Josh Goebel and other contributors
|
|
151
|
+
- **URL:** https://github.com/highlightjs/highlight.js
|
|
152
|
+
|
|
153
|
+
### html2canvas
|
|
154
|
+
|
|
155
|
+
The card screenshot tool of the 3D map (`index.html`). Its own browser build (`dist/html2canvas.min.js`, which bundles `base64-arraybuffer`, `css-line-break`, `text-segmentation` and `utrie`, all MIT, by the same author), copied by `neural-interface/scripts/build-vendor.mjs` into `neural-interface/public/vendor/html2canvas/` with the package's `LICENSE`.
|
|
156
|
+
|
|
157
|
+
- **Version:** 1.4.1
|
|
158
|
+
- **License:** MIT
|
|
159
|
+
- **Copyright:** Copyright (c) 2012 Niklas von Hertzen
|
|
160
|
+
- **URL:** https://github.com/niklasvh/html2canvas
|
|
161
|
+
|
|
162
|
+
### yaml
|
|
163
|
+
|
|
164
|
+
The YAML parser behind the Skills Studio: it reads the frontmatter of skills, commands and agents, and changes it one key at a time without touching the rest (`neural-interface/lib/skills/`, `neural-interface/public/shared/skills/ss-frontmatter.js`). No dependencies of its own. The Studio's metadata form uses the same package in the browser: its browser build (`browser/dist/index.js`), bundled by `neural-interface/scripts/build-vendor.mjs` into one file in `neural-interface/public/vendor/yaml/` with the package's `LICENSE` and a `manifest.json`, loaded only when the editor opens.
|
|
165
|
+
|
|
166
|
+
- **Version:** 2.9.1
|
|
167
|
+
- **License:** ISC
|
|
168
|
+
- **Copyright:** Copyright Eemeli Aro
|
|
169
|
+
- **URL:** https://github.com/eemeli/yaml
|
|
170
|
+
|
|
171
|
+
### Caveat
|
|
172
|
+
|
|
173
|
+
The handwriting of the whiteboard and of the Workspace tour, served by SynaBun itself instead of a font CDN. The Latin subset of weights 400 and 700 (`caveat-latin-400-normal.woff2`, `caveat-latin-700-normal.woff2`) from the npm package `@fontsource/caveat` 5.3.0, copied unmodified into `neural-interface/public/vendor/caveat/` with the package's `LICENSE` as `OFL.txt`, a `caveat.css` that declares the two faces and a `manifest.json` with the SHA-256 of each file. The font is not sold on its own and its name is not changed (OFL 1.1, conditions 1 and 3).
|
|
174
|
+
|
|
175
|
+
- **Version:** 5.3.0 (`@fontsource/caveat`)
|
|
176
|
+
- **License:** SIL Open Font License 1.1
|
|
177
|
+
- **Copyright:** Copyright 2014 The Caveat Project Authors
|
|
178
|
+
- **URL:** https://github.com/googlefonts/caveat
|
|
179
|
+
|
|
117
180
|
## Vendored Code
|
|
118
181
|
|
|
119
182
|
| Component | Location | License | Project |
|
|
@@ -182,6 +245,7 @@ The model is distributed under Apache-2.0. See its
|
|
|
182
245
|
- [BSD 2-Clause License](https://opensource.org/license/bsd-2-clause)
|
|
183
246
|
- [BSD 3-Clause License](https://opensource.org/license/bsd-3-clause)
|
|
184
247
|
- [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html)
|
|
248
|
+
- [ISC License](https://opensource.org/license/isc-license-txt)
|
|
185
249
|
|
|
186
250
|
SynaBun's own Apache-2.0 terms are in [LICENSE](./LICENSE), and attribution
|
|
187
251
|
information is in [NOTICE](./NOTICE). The
|
package/bin/synabun.js
CHANGED
|
@@ -1,30 +1,77 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* `synabun`, the command an npm install puts on the PATH.
|
|
5
|
+
*
|
|
6
|
+
* synabun mcp [...] the MCP server on stdio, for an AI tool's MCP config. It
|
|
7
|
+
* starts mcp-server/run.mjs straight from here, as
|
|
8
|
+
* `node <package>/mcp-server/run.mjs` and a packaged build's
|
|
9
|
+
* `<entry> mcp` do (packaging/launcher/launcher.c): same
|
|
10
|
+
* environment, same working folder, same arguments after
|
|
11
|
+
* `mcp`. setup.js is never loaded, so nothing reaches stdout,
|
|
12
|
+
* the protocol channel, before the server does; the server
|
|
13
|
+
* logs to stderr.
|
|
14
|
+
* synabun [...] everything else: setup.js with the same arguments.
|
|
15
|
+
*/
|
|
16
|
+
|
|
3
17
|
import { spawn } from 'node:child_process';
|
|
18
|
+
import { realpathSync } from 'node:fs';
|
|
4
19
|
import { dirname, resolve } from 'node:path';
|
|
5
20
|
import { fileURLToPath } from 'node:url';
|
|
6
21
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
})
|
|
22
|
+
export const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
23
|
+
export const MCP_COMMAND = 'mcp';
|
|
24
|
+
// node:sqlite's warning: every SynaBun process starts with it off (setup.js, the packaged launcher).
|
|
25
|
+
const NODE_FLAG = '--disable-warning=ExperimentalWarning';
|
|
26
|
+
|
|
27
|
+
/** Node's arguments for `synabun <args>`. */
|
|
28
|
+
export function nodeArgs(args, { packageRoot = PACKAGE_ROOT } = {}) {
|
|
29
|
+
if (args[0] === MCP_COMMAND) return [NODE_FLAG, resolve(packageRoot, 'mcp-server', 'run.mjs'), ...args.slice(1)];
|
|
30
|
+
return [NODE_FLAG, resolve(packageRoot, 'setup.js'), ...args];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** The signals an MCP client (or a terminal) stops the server with. */
|
|
34
|
+
export function forwardedSignals(platform = process.platform) {
|
|
35
|
+
return platform === 'win32' ? ['SIGINT', 'SIGTERM'] : ['SIGINT', 'SIGTERM', 'SIGHUP'];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Node on `args`, with this process's stdio, environment and working folder.
|
|
40
|
+
* This process then ends the way the child ended: its exit code, or the same
|
|
41
|
+
* signal. With `forwardSignals`, a SIGINT, SIGTERM or SIGHUP sent to this
|
|
42
|
+
* process goes to the child while it runs: an MCP client stops the server it
|
|
43
|
+
* started by signalling the process it started, which is this one.
|
|
44
|
+
*/
|
|
45
|
+
export function runNode(args, { execPath = process.execPath, env = process.env, cwd = process.cwd(), forwardSignals = false } = {}) {
|
|
46
|
+
const child = spawn(execPath, args, { cwd, env, stdio: 'inherit' });
|
|
47
|
+
const handlers = forwardSignals
|
|
48
|
+
? forwardedSignals().map((signal) => [signal, () => { try { child.kill(signal); } catch {} }])
|
|
49
|
+
: [];
|
|
50
|
+
for (const [signal, handler] of handlers) process.on(signal, handler);
|
|
51
|
+
const release = () => { for (const [signal, handler] of handlers) process.removeListener(signal, handler); };
|
|
52
|
+
|
|
53
|
+
child.on('error', (error) => {
|
|
54
|
+
release();
|
|
55
|
+
console.error(`Could not start SynaBun: ${error.message}`);
|
|
56
|
+
process.exitCode = 1;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
child.on('exit', (code, signal) => {
|
|
60
|
+
release();
|
|
61
|
+
if (signal) {
|
|
62
|
+
process.kill(process.pid, signal);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
process.exitCode = code ?? 1;
|
|
66
|
+
});
|
|
67
|
+
return child;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const invokedDirectly = (() => {
|
|
71
|
+
try { return !!process.argv[1] && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url)); } catch { return false; }
|
|
72
|
+
})();
|
|
73
|
+
|
|
74
|
+
if (invokedDirectly) {
|
|
75
|
+
const args = process.argv.slice(2);
|
|
76
|
+
runNode(nodeArgs(args), { forwardSignals: args[0] === MCP_COMMAND });
|
|
77
|
+
}
|
package/docs/whatsapp.md
CHANGED
|
@@ -299,7 +299,7 @@ Ask for a file and the Assistant sends it to this chat as a real WhatsApp attach
|
|
|
299
299
|
- password managers (1Password, Bitwarden, KeePass `*.kdbx`), `~/Library/Keychains`, GNOME Keyring and KWallet, Windows Credential Manager (with its DPAPI keys and the Vault), the Mail and Messages stores and Thunderbird;
|
|
300
300
|
- shell histories (`.zsh_history`, `.bash_history`, fish's history, PowerShell's), `.netrc`, `.npmrc`, `.pypirc`, `.pgpass`, `.git-credentials` and git's `~/.config/git/credentials`, `.vault-token`, the `.docker`, `.kube`, `.aws`, `.azure`, gcloud, `gh`, `.gnupg` and `.ssh` folders, and CLI token stores (cargo, gem, Pulumi, Hugging Face, Kaggle, rclone, hub, glab, doctl, Stripe, Fly, cloudflared, OCI, Databricks);
|
|
301
301
|
- key and certificate files anywhere (`*.pem`, `*.key`, `*.p12`, `*.pfx`, `*.jks`, `*.keystore`, `*.ppk`, `*.p8`, SSH `id_*` keys), `.env` files and their variants, terraform state;
|
|
302
|
-
- AI tool configuration and credentials: `~/.claude.json`, `~/.claude*`, `~/.codex*`, OpenCode's configuration and `auth.json
|
|
302
|
+
- AI tool configuration and credentials: `~/.claude.json`, `~/.claude*`, `~/.codex*`, OpenCode's configuration, its database (`opencode.db`, where OpenCode 2 keeps credentials) and the `auth.json` OpenCode 1 kept, GitHub Copilot's tokens, `.cursor/mcp.json`, `claude_desktop_config.json`, `mcp-api-key` and `.synabun-api-key` files;
|
|
303
303
|
- copies of those places' secret parts wherever they are (a backup disk, Time Machine): `.synabun/whatsapp`, `mcp-data`, `runtime` and `backups`, `sidepanel-configs`, `.claude/settings*.json` and `.claude/projects`, `.codex*/config.toml`, `sessions` and `history.jsonl`; and SynaBun's own backup archives (`synabun-<kind>-<timestamp>.zip`, `synabun-auto-backup.zip`) by their name, in whatever folder the backups go to.
|
|
304
304
|
|
|
305
305
|
The list is explicit (`neural-interface/lib/whatsapp/local-file.js`, `DENYLIST`) and matched without regard to letter case. The protected folders (the session, the data home, `~/.claude*`, `~/.codex*`) are also recognized by what they are on disk, their device and inode, so another spelling of the same folder is refused like the usual one: macOS reaches every folder of the data volume under `/System/Volumes/Data/…` too, which `realpath` keeps. On Windows a name is also checked as Windows opens it, without trailing dots and spaces (`.ssh.\id_rsa` is `.ssh\id_rsa`). **The content of a file is never inspected**: a secret inside an ordinary file with an ordinary name is sent like any other file, so ask only for what you mean to receive. Keynote presentations share the `.key` extension with private keys and are refused too: export them to PDF first.
|
|
@@ -390,7 +390,7 @@ App-wide, every WebSocket upgrade (`/ws/*`) must carry no `Origin` or this serve
|
|
|
390
390
|
| "SynaBun is not reachable: nothing was sent" (`UNREACHABLE`) | The brain's MCP server could not reach SynaBun at all, so the file was not sent. Check that SynaBun is running, then ask again. |
|
|
391
391
|
| Transcripts get words wrong | Set `transcriptionLanguage` to the language you speak (`auto` guesses per note), or point `transcriptionModelPath` at a larger ggml model. |
|
|
392
392
|
|
|
393
|
-
**Not the same as the WhatsApp browser tools.** The `
|
|
393
|
+
**Not the same as the WhatsApp browser tools.** The `browser_whatsapp` tool group (`browser_extract_wa_chats`, `browser_extract_wa_messages`) lets agents read WhatsApp Web in SynaBun's browser. The WhatsApp Link is you chatting with SynaBun from your phone. They share nothing.
|
|
394
394
|
|
|
395
395
|
## Environment
|
|
396
396
|
|
|
@@ -29,7 +29,11 @@ import { getDataHome } from '../../lib/paths.js';
|
|
|
29
29
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
30
30
|
const DATA_HOME = getDataHome();
|
|
31
31
|
const LOOP_DIR = join(DATA_HOME, 'data', 'loop');
|
|
32
|
-
|
|
32
|
+
// A guarded worker's sandbox blocks :3344, so SynaBun gives it the worker-only channel (its browser proxy forwards
|
|
33
|
+
// /api/browser/*). Inside such a worker the browser-only policy must NOT fail open: if SynaBun cannot be reached
|
|
34
|
+
// even over the channel, apply the worker default and deny WebSearch/WebFetch.
|
|
35
|
+
const WORKER_CHANNEL = process.env.SYNABUN_WORKER_CHANNEL || null;
|
|
36
|
+
const NI_BASE = WORKER_CHANNEL || process.env.SYNABUN_NI_URL || 'http://localhost:3344';
|
|
33
37
|
|
|
34
38
|
const BLOCK_REASON = (toolName) =>
|
|
35
39
|
`BLOCKED: ${toolName} is not allowed while a SynaBun browser session is open. Use the SynaBun browser tools (browser_navigate, browser_click, browser_content, etc.) instead. If the page requires login or CAPTCHA, STOP and tell the user what they need to do in the browser panel. Do NOT fall back to web search.`;
|
|
@@ -69,6 +73,13 @@ async function handleInput() {
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
if (!niReachable) {
|
|
76
|
+
// A guarded worker that cannot reach SynaBun even over its channel: apply the worker default (deny), so the
|
|
77
|
+
// sandbox's inability to reach :3344 never becomes a way to bypass the browser-only policy. Outside a guarded
|
|
78
|
+
// worker (no channel var) this stays fail-open and quiet — a stale loop file must not block the owner.
|
|
79
|
+
if (WORKER_CHANNEL) {
|
|
80
|
+
process.stdout.write(JSON.stringify({ decision: 'block', reason: BLOCK_REASON(tool_name) }));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
72
83
|
process.stdout.write(JSON.stringify({}));
|
|
73
84
|
return;
|
|
74
85
|
}
|
|
@@ -864,8 +864,13 @@ export async function judgeText(kind, text, { project, timeoutMs = 1500, extra =
|
|
|
864
864
|
/**
|
|
865
865
|
* Fire-and-forget POST that may wait at most `waitMs` for the answer and never
|
|
866
866
|
* keeps the process alive past that. Resolves true only on a 2xx.
|
|
867
|
+
* SYNABUN_HOOK_NOTICE_WAIT_MS replaces `waitMs` for the hook tests only
|
|
868
|
+
* (tests/helpers/hook-harness.mjs): on a machine running the whole suite the
|
|
869
|
+
* notice missed its 200 ms. Nothing SynaBun starts sets it.
|
|
867
870
|
*/
|
|
868
871
|
export async function postNotice(path, body, waitMs = 200) {
|
|
872
|
+
const testWait = Number(process.env.SYNABUN_HOOK_NOTICE_WAIT_MS);
|
|
873
|
+
if (Number.isFinite(testWait) && testWait > 0) waitMs = testWait;
|
|
869
874
|
let timer;
|
|
870
875
|
try {
|
|
871
876
|
const request = fetch(`${niUrl()}${path}`, {
|
|
@@ -916,7 +916,7 @@ function handleStop({ sessionId, lastMessage, cwd, transcriptPath, judged = {},
|
|
|
916
916
|
}
|
|
917
917
|
|
|
918
918
|
// CHECK 2.5: User learning (bundled with task or standalone)
|
|
919
|
-
// Skipped when waiting for user action (interactive flows
|
|
919
|
+
// Skipped when waiting for user action (interactive questionnaire flows).
|
|
920
920
|
// Limited to 1 retry to minimize chat noise.
|
|
921
921
|
// Never inside the Assistant's brain (SYNABUN_ASSISTANT_SESSION): SynaBun's harness learns
|
|
922
922
|
// about the user there, and prompt-submit.mjs never arms this in it.
|
package/launcher.mjs
CHANGED
|
@@ -9,19 +9,25 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Registered by lib/start-launcher.js; can also be run by hand:
|
|
11
11
|
* node launcher.mjs
|
|
12
|
+
*
|
|
13
|
+
* Start at login (Settings > App, neural-interface/lib/login-start.js) runs it
|
|
14
|
+
* with `--via=login --background`: the server starts with no window, and no
|
|
15
|
+
* page waits for a report.
|
|
12
16
|
*/
|
|
13
17
|
|
|
14
18
|
import { dirname } from 'node:path';
|
|
15
19
|
import { fileURLToPath } from 'node:url';
|
|
16
|
-
import { BEACON_LINGER_MS, runLauncher } from './lib/start-launcher.js';
|
|
20
|
+
import { BEACON_LINGER_MS, parseLauncherArgs, runLauncher } from './lib/start-launcher.js';
|
|
17
21
|
|
|
18
22
|
const packageRoot = dirname(fileURLToPath(import.meta.url));
|
|
19
23
|
|
|
20
24
|
try {
|
|
21
25
|
// The page that asked is offline and cannot ask a server how the start is
|
|
22
26
|
// going: the launch reports itself on its beacon, and keeps a failure
|
|
23
|
-
// readable there for a moment.
|
|
24
|
-
const
|
|
27
|
+
// readable there for a moment. A start at login has no page.
|
|
28
|
+
const argv = process.argv.slice(2);
|
|
29
|
+
const login = parseLauncherArgs(argv).via === 'login';
|
|
30
|
+
const result = await runLauncher({ argv, packageRoot, beacon: !login, lingerMs: login ? 0 : BEACON_LINGER_MS });
|
|
25
31
|
if (process.stdout.isTTY) {
|
|
26
32
|
const said = {
|
|
27
33
|
ignored: 'Nothing to do for that link.',
|