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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { cxpText } from './cdx-copy.js';
|
|
1
2
|
// ═══════════════════════════════════════════
|
|
2
3
|
// SynaBun — Codex Panel: Render Module
|
|
3
4
|
// Text utilities, card rendering, delta appending, and history rendering.
|
|
@@ -16,7 +17,8 @@ import { bindExpandableCard, setCardExpanded } from './cdx-cards.js';
|
|
|
16
17
|
import { mountMcpAppCard } from './cdx-mcp-app-host.js';
|
|
17
18
|
import { OUTPUT_LIMITS, boundedText, jsonAnswer, prettyJsonFences, readableStructuredValue, fileChangeDiffs, parseUnifiedDiff, deduplicateTurnDiff } from './cdx-output-model.js';
|
|
18
19
|
import { renderReadableOutput, renderReadableBlock, cleanOutputBlocks, hydrateOutputControls, observeOutputBlocks, renderDiffView, restoreDiffViews } from './cdx-output.js';
|
|
19
|
-
import { fileLinkTitle, fillFileLinkCopy, isInsideRoots, parseFileLinkTarget } from '../file-links.js';
|
|
20
|
+
import { fileLinkTitle, fillFileLinkCopy, isInsideRoots, parseFileLinkTarget, readFileLink } from '../file-links.js';
|
|
21
|
+
import { sanitizeHtmlString } from '../assistant/asst-sanitize.js';
|
|
20
22
|
export { setCardExpanded } from './cdx-cards.js';
|
|
21
23
|
|
|
22
24
|
// ── Shared context (set by cdx-tabs via setRenderContext) ──
|
|
@@ -98,6 +100,11 @@ export function esc(s) {
|
|
|
98
100
|
// streaming delta tick. Memoize so identical text — unchanged messages
|
|
99
101
|
// elsewhere in the transcript that get re-rendered anyway — returns cached
|
|
100
102
|
// HTML without re-parsing.
|
|
103
|
+
//
|
|
104
|
+
// What a model writes is not ours, and marked passes raw HTML through: an
|
|
105
|
+
// `<img onerror>` in a reply would run in SynaBun's origin with no click. Every
|
|
106
|
+
// Markdown sink of the panel takes md()'s output, so it goes through the
|
|
107
|
+
// allowlist sanitiser the Assistant, Claude and OpenCode panels use, here, once.
|
|
101
108
|
const _mdCache = new Map();
|
|
102
109
|
const _MD_CACHE_LIMIT = 512;
|
|
103
110
|
let _mdRenderer = null;
|
|
@@ -134,6 +141,9 @@ export function md(text) {
|
|
|
134
141
|
try { html = parser.call(renderer, prettyJsonFences(key)); }
|
|
135
142
|
catch { html = markdownFallback(key); }
|
|
136
143
|
}
|
|
144
|
+
// A page with no DOM to sanitise in, or a sanitiser that fails, gets escaped text: never raw HTML.
|
|
145
|
+
try { html = sanitizeHtmlString(html); }
|
|
146
|
+
catch { html = markdownFallback(key); }
|
|
137
147
|
if (_mdCache.size >= _MD_CACHE_LIMIT) {
|
|
138
148
|
const firstKey = _mdCache.keys().next().value;
|
|
139
149
|
if (firstKey !== undefined) _mdCache.delete(firstKey);
|
|
@@ -165,7 +175,7 @@ function extractCompactAssistantSummary(text) {
|
|
|
165
175
|
.replace(/^[#>\-\*\d\.\s]+/gm, '')
|
|
166
176
|
.replace(/\s+/g, ' ')
|
|
167
177
|
.trim();
|
|
168
|
-
if (!value) return 'Working through the next step';
|
|
178
|
+
if (!value) return cxpText('working', 'Working through the next step');
|
|
169
179
|
return value;
|
|
170
180
|
}
|
|
171
181
|
|
|
@@ -409,8 +419,11 @@ function openInEditorTitle(target) {
|
|
|
409
419
|
|
|
410
420
|
export function markProjectFileAnchors(container) {
|
|
411
421
|
if (!container) return;
|
|
412
|
-
|
|
413
|
-
|
|
422
|
+
// A path the sanitiser kept as written (data-file-target) is the link's target: its href, when it has one, is
|
|
423
|
+
// that path resolved against the page.
|
|
424
|
+
container.querySelectorAll('a[href], a[data-file-target]').forEach((link) => {
|
|
425
|
+
const read = readFileLink(link);
|
|
426
|
+
const target = read && projectFileTarget(read.raw);
|
|
414
427
|
if (!target) return;
|
|
415
428
|
link.classList.add('cxp-file-link');
|
|
416
429
|
link.dataset.projectFilePath = target.path;
|
|
@@ -608,7 +621,7 @@ function resolveFileChangeSummary(item) {
|
|
|
608
621
|
const changes = Array.isArray(item?.changes) ? item.changes.slice(0, OUTPUT_LIMITS.files) : [];
|
|
609
622
|
const lines = changes.map((change) => describeFileChange(change)).filter(Boolean);
|
|
610
623
|
if (lines.length) return lines.join('\n');
|
|
611
|
-
return 'Pending file changes';
|
|
624
|
+
return cxpText('pendingFiles', 'Pending file changes');
|
|
612
625
|
}
|
|
613
626
|
|
|
614
627
|
function collectStructuredText(value, seen = new Set()) {
|
|
@@ -796,14 +809,27 @@ export function sanitizeStoredTranscriptDom(container) {
|
|
|
796
809
|
});
|
|
797
810
|
if (!_ctx.running) container.querySelectorAll('.cxp-reasoning').forEach(card => {
|
|
798
811
|
const body = card.querySelector('.cxp-reasoning-body');
|
|
799
|
-
|
|
812
|
+
const text = body?.textContent.trim() || '';
|
|
813
|
+
if (!text || ['Waiting for reasoning summary...', 'No reasoning summary was provided.', cxpText('waitingReasoning', 'Waiting for reasoning summary...'), cxpText('noReasoning', 'No reasoning summary was provided.')].includes(text)) { card.remove(); return; }
|
|
814
|
+
const title = card.querySelector('.cxp-card-title');
|
|
815
|
+
if (title) title.textContent = cxpText('reasoning', 'Reasoning Summary');
|
|
800
816
|
const pill = card.querySelector('.cxp-status-pill');
|
|
801
|
-
if (pill
|
|
817
|
+
if (pill) pill.textContent = cxpText('status_complete', 'complete');
|
|
802
818
|
});
|
|
803
819
|
syncStatusPillTones(container);
|
|
804
820
|
cleanOutputBlocks(container);
|
|
805
821
|
// Old snapshots retain their classes; replace just their verbose diff body.
|
|
806
822
|
container.querySelectorAll('[data-item-type="fileChange"]').forEach(card => {
|
|
823
|
+
const title = card.querySelector('.cxp-card-title');
|
|
824
|
+
if (title) title.textContent = cxpText('fileChange', 'File change');
|
|
825
|
+
const pill = card.querySelector('.cxp-status-pill');
|
|
826
|
+
const completed = ['completed', cxpText('status_completed', 'completed')].includes(pill?.textContent);
|
|
827
|
+
const subtitle = card.querySelector('.cxp-card-subtitle');
|
|
828
|
+
if (subtitle) subtitle.textContent = fileChangeSubtitle({ status: completed ? 'completed' : '' });
|
|
829
|
+
if (completed && pill) pill.textContent = cxpText('status_completed', 'completed');
|
|
830
|
+
const meta = card.querySelector('.cxp-card-meta');
|
|
831
|
+
const count = meta?.textContent.match(/^(\d+) file changes?$/)?.[1];
|
|
832
|
+
if (count) meta.textContent = cxpText(Number(count) === 1 ? 'oneFileChange' : 'fileChanges', Number(count) === 1 ? '1 file change' : '{count} file changes', { count });
|
|
807
833
|
const fold = card.querySelector('.cxp-fold-diff');
|
|
808
834
|
const raw = fold?.querySelector('.cxp-card-pre-diff')?.textContent;
|
|
809
835
|
if (!raw) return;
|
|
@@ -2021,14 +2047,17 @@ function getReasoningPreviewText(state) {
|
|
|
2021
2047
|
const contentText = Array.isArray(state?.contentLines)
|
|
2022
2048
|
? state.contentLines.map((line) => String(line || '').trim()).filter(Boolean).join(' ')
|
|
2023
2049
|
: '';
|
|
2024
|
-
return _ctx.cleanPreview(summaryText || contentText || 'Working through the next step');
|
|
2050
|
+
return _ctx.cleanPreview(summaryText || contentText || cxpText('working', 'Working through the next step'));
|
|
2025
2051
|
}
|
|
2026
2052
|
|
|
2027
2053
|
function updateReasoningChrome(state, { complete = false } = {}) {
|
|
2028
2054
|
if (!state) return;
|
|
2029
|
-
if (state.summaryEl) state.summaryEl.textContent = complete && !state.summaryLines?.some(line => String(line).trim()) && !state.contentLines?.some(line => String(line).trim()) ? 'No reasoning summary was provided.' : getReasoningPreviewText(state);
|
|
2030
|
-
if (state.pillEl) state.pillEl.textContent = complete ? 'complete' : 'live';
|
|
2031
|
-
if (state.el)
|
|
2055
|
+
if (state.summaryEl) state.summaryEl.textContent = complete && !state.summaryLines?.some(line => String(line).trim()) && !state.contentLines?.some(line => String(line).trim()) ? cxpText('noReasoning', 'No reasoning summary was provided.') : getReasoningPreviewText(state);
|
|
2056
|
+
if (state.pillEl) state.pillEl.textContent = complete ? cxpText('status_complete', 'complete') : cxpText('live', 'live');
|
|
2057
|
+
if (state.el) {
|
|
2058
|
+
state.el.hidden = !state.summaryLines?.some(line => String(line).trim()) && !state.contentLines?.some(line => String(line).trim());
|
|
2059
|
+
state.el.classList.toggle('cxp-reasoning-done', !!complete);
|
|
2060
|
+
}
|
|
2032
2061
|
}
|
|
2033
2062
|
|
|
2034
2063
|
function cacheCollapsedCardState(state, item, itemType) {
|
|
@@ -2088,15 +2117,9 @@ function cacheCollapsedCardState(state, item, itemType) {
|
|
|
2088
2117
|
case 'fileChange': {
|
|
2089
2118
|
const changes = Array.isArray(item.changes) ? item.changes : [];
|
|
2090
2119
|
if (hasOwnField(item, 'changes')) {
|
|
2091
|
-
state.fileMetaText = changes.length ?
|
|
2120
|
+
state.fileMetaText = changes.length ? cxpText(changes.length === 1 ? 'oneFileChange' : 'fileChanges', changes.length === 1 ? '1 file change' : '{count} file changes', { count: changes.length }) : cxpText('pendingFiles', 'Pending file changes');
|
|
2092
2121
|
state.filesText = resolveFileChangeSummary(item);
|
|
2093
|
-
|
|
2094
|
-
.map((change) => extractStructuredText(change?.diff || change?.patch || change?.content || change?.output || ''))
|
|
2095
|
-
.filter(Boolean)
|
|
2096
|
-
.join('\n\n');
|
|
2097
|
-
if (item.aggregatedOutput != null || diffText) {
|
|
2098
|
-
state.outputBuf = extractStructuredText(item.aggregatedOutput) || item.aggregatedOutput || diffText;
|
|
2099
|
-
}
|
|
2122
|
+
if (item.aggregatedOutput != null) state.outputBuf = extractStructuredText(item.aggregatedOutput) || item.aggregatedOutput || '';
|
|
2100
2123
|
} else if (item.aggregatedOutput != null) {
|
|
2101
2124
|
state.outputBuf = extractStructuredText(item.aggregatedOutput) || item.aggregatedOutput || '';
|
|
2102
2125
|
}
|
|
@@ -2150,8 +2173,8 @@ export function flushCardBody(state) {
|
|
|
2150
2173
|
setOptionalSection(state.resultSectionEl, state.resultEl, state.resultText || '');
|
|
2151
2174
|
break;
|
|
2152
2175
|
case 'fileChange':
|
|
2153
|
-
if (state.metaEl) state.metaEl.textContent = state.fileMetaText || 'Pending file changes';
|
|
2154
|
-
if (state.filesEl) state.filesEl.textContent = state.filesText || 'Pending file changes';
|
|
2176
|
+
if (state.metaEl) state.metaEl.textContent = state.fileMetaText || cxpText('pendingFiles', 'Pending file changes');
|
|
2177
|
+
if (state.filesEl) state.filesEl.textContent = state.filesText || cxpText('pendingFiles', 'Pending file changes');
|
|
2155
2178
|
refreshFileChangeView(state);
|
|
2156
2179
|
break;
|
|
2157
2180
|
case 'collabAgentToolCall':
|
|
@@ -2376,6 +2399,7 @@ export function ensureReasoningState(item) {
|
|
|
2376
2399
|
|
|
2377
2400
|
const details = document.createElement('details');
|
|
2378
2401
|
details.className = 'cxp-card cxp-reasoning';
|
|
2402
|
+
details.hidden = true;
|
|
2379
2403
|
details.dataset.itemId = item.id || '';
|
|
2380
2404
|
details.dataset.expanded = '1';
|
|
2381
2405
|
|
|
@@ -2383,8 +2407,8 @@ export function ensureReasoningState(item) {
|
|
|
2383
2407
|
summary.innerHTML = `
|
|
2384
2408
|
<span class="cxp-card-icon">${ICON_SPARK}</span>
|
|
2385
2409
|
<span class="cxp-card-titles">
|
|
2386
|
-
<span class="cxp-card-title"
|
|
2387
|
-
<span class="cxp-card-subtitle"
|
|
2410
|
+
<span class="cxp-card-title">${cxpText('reasoning', 'Reasoning Summary')}</span>
|
|
2411
|
+
<span class="cxp-card-subtitle">${cxpText('working', 'Working through the next step')}</span>
|
|
2388
2412
|
</span>
|
|
2389
2413
|
<span class="cxp-think-dots"><span></span><span></span><span></span></span>
|
|
2390
2414
|
<span class="cxp-status-pill">live</span>
|
|
@@ -2631,10 +2655,14 @@ export function completeTurnOutputs(turnId) {
|
|
|
2631
2655
|
}
|
|
2632
2656
|
}
|
|
2633
2657
|
|
|
2658
|
+
function fileChangeSubtitle(item) {
|
|
2659
|
+
return item.status === 'completed' ? cxpText('filesUpdated', 'File updates applied') : cxpText('fileUpdates', 'File updates');
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2634
2662
|
export function ensureFileChangeState(item) {
|
|
2635
2663
|
let state = _ctx.items.get(item.id);
|
|
2636
2664
|
if (state) return state;
|
|
2637
|
-
const card = createCard(item, ICON_FILES, '
|
|
2665
|
+
const card = createCard(item, ICON_FILES, cxpText('fileChange', 'File change'), fileChangeSubtitle(item));
|
|
2638
2666
|
setCardExpanded(card.el, true);
|
|
2639
2667
|
|
|
2640
2668
|
const summary = document.createElement('div');
|
|
@@ -2645,7 +2673,7 @@ export function ensureFileChangeState(item) {
|
|
|
2645
2673
|
filesSection.className = 'cxp-card-section';
|
|
2646
2674
|
const filesLabel = document.createElement('div');
|
|
2647
2675
|
filesLabel.className = 'cxp-card-section-label';
|
|
2648
|
-
filesLabel.textContent = 'Files changed';
|
|
2676
|
+
filesLabel.textContent = cxpText('filesChanged', 'Files changed');
|
|
2649
2677
|
const filesBody = document.createElement('div');
|
|
2650
2678
|
filesBody.className = 'cxp-card-meta';
|
|
2651
2679
|
filesSection.append(filesLabel, filesBody);
|
|
@@ -2660,6 +2688,7 @@ export function ensureFileChangeState(item) {
|
|
|
2660
2688
|
type: 'fileChange',
|
|
2661
2689
|
el: card.el,
|
|
2662
2690
|
pillEl: card.pill,
|
|
2691
|
+
subtitleEl: card.subtitleEl,
|
|
2663
2692
|
metaEl: summary,
|
|
2664
2693
|
filesEl: filesBody,
|
|
2665
2694
|
outputSectionEl: outputEl,
|
|
@@ -2877,8 +2906,9 @@ export function updateItemFromData(item) {
|
|
|
2877
2906
|
state.titleEl.textContent = head?.title || h.detail || item.type || 'Item';
|
|
2878
2907
|
if (head && state.subtitleEl) state.subtitleEl.textContent = head.subtitle;
|
|
2879
2908
|
}
|
|
2909
|
+
if (itemType === 'fileChange' && state.subtitleEl) state.subtitleEl.textContent = fileChangeSubtitle(state._lastItem);
|
|
2880
2910
|
if (state.pillEl && item.status != null) state.pillEl.textContent = _ctx.formatStatus(item.status);
|
|
2881
|
-
if (isCardBodyHidden(state)) { state._bodyDirty = true; _ctx.scheduleThreadSnapshotSave(_ctx.boundTab); return; }
|
|
2911
|
+
if (itemType !== 'reasoning' && isCardBodyHidden(state)) { state._bodyDirty = true; _ctx.scheduleThreadSnapshotSave(_ctx.boundTab); return; }
|
|
2882
2912
|
}
|
|
2883
2913
|
|
|
2884
2914
|
switch (itemType) {
|
|
@@ -2966,8 +2996,8 @@ export function updateItemFromData(item) {
|
|
|
2966
2996
|
}
|
|
2967
2997
|
case 'fileChange': {
|
|
2968
2998
|
state.pillEl.textContent = _ctx.formatStatus(item.status);
|
|
2969
|
-
state.metaEl.textContent = state.fileMetaText || 'Pending file changes';
|
|
2970
|
-
if (state.filesEl) state.filesEl.textContent = state.filesText || 'Pending file changes';
|
|
2999
|
+
state.metaEl.textContent = state.fileMetaText || cxpText('pendingFiles', 'Pending file changes');
|
|
3000
|
+
if (state.filesEl) state.filesEl.textContent = state.filesText || cxpText('pendingFiles', 'Pending file changes');
|
|
2971
3001
|
if (item.aggregatedOutput != null) {
|
|
2972
3002
|
state.outputBuf = extractStructuredText(item.aggregatedOutput) || item.aggregatedOutput || '';
|
|
2973
3003
|
}
|
|
@@ -3092,26 +3122,26 @@ export function appendAgentDelta(itemId, delta) {
|
|
|
3092
3122
|
|
|
3093
3123
|
export function appendPlanDelta(itemId, delta) {
|
|
3094
3124
|
const state = ensurePlanState({ id: itemId });
|
|
3095
|
-
if (state.pillEl) state.pillEl.textContent = 'live';
|
|
3125
|
+
if (state.pillEl) state.pillEl.textContent = cxpText('live', 'live');
|
|
3096
3126
|
state.buffer += delta || '';
|
|
3097
3127
|
if (isCardBodyHidden(state)) { state._bodyDirty = true; return; }
|
|
3098
3128
|
setMarkdownBuffer(state, state.buffer, false);
|
|
3099
3129
|
}
|
|
3100
3130
|
|
|
3101
3131
|
export function getReasoningBodyText(state, { complete = false } = {}) {
|
|
3102
|
-
if (!state) return complete ? 'No reasoning summary was provided.' : 'Waiting for reasoning summary...';
|
|
3132
|
+
if (!state) return complete ? cxpText('noReasoning', 'No reasoning summary was provided.') : cxpText('waitingReasoning', 'Waiting for reasoning summary...');
|
|
3103
3133
|
const contentText = Array.isArray(state.contentLines) ? state.contentLines.join('').trim() : '';
|
|
3104
3134
|
if (contentText) return contentText;
|
|
3105
3135
|
const summaryText = Array.isArray(state.summaryLines)
|
|
3106
3136
|
? state.summaryLines.map((line) => String(line || '').trim()).filter(Boolean).join('\n')
|
|
3107
3137
|
: '';
|
|
3108
|
-
return summaryText || (complete ? 'No reasoning summary was provided.' : 'Waiting for reasoning summary...');
|
|
3138
|
+
return summaryText || (complete ? cxpText('noReasoning', 'No reasoning summary was provided.') : cxpText('waitingReasoning', 'Waiting for reasoning summary...'));
|
|
3109
3139
|
}
|
|
3110
3140
|
|
|
3111
3141
|
export function appendReasoningDelta(itemId, delta, isSummary = false, summaryIndex = null) {
|
|
3112
3142
|
const state = ensureReasoningState({ id: itemId });
|
|
3113
3143
|
state.el?.classList.remove('cxp-reasoning-done');
|
|
3114
|
-
if (state.pillEl) state.pillEl.textContent = 'live';
|
|
3144
|
+
if (state.pillEl) state.pillEl.textContent = cxpText('live', 'live');
|
|
3115
3145
|
if (!state.userToggled && state.el && !state.el.open) {
|
|
3116
3146
|
state.suppressToggleTracking = true;
|
|
3117
3147
|
state.el.open = true;
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
buildSynaBunChoiceContent,
|
|
13
13
|
codexApprovalDecisionActions,
|
|
14
14
|
codexHeldServerRequests,
|
|
15
|
-
|
|
15
|
+
codexMcpToolApproval,
|
|
16
16
|
codexMcpToolApprovalActions,
|
|
17
17
|
codexPermissionApprovalActions,
|
|
18
18
|
codexRequestIdentityKey,
|
|
@@ -546,9 +546,9 @@ export function isElicitationValueSatisfied(value, schema) {
|
|
|
546
546
|
|
|
547
547
|
export function renderMcpToolApprovalRequest(requestId, params) {
|
|
548
548
|
if (_ctx.requestCards.has(String(requestId))) return;
|
|
549
|
-
const
|
|
549
|
+
const approval = codexMcpToolApproval(params);
|
|
550
550
|
const serverName = String(params?.serverName || 'MCP');
|
|
551
|
-
const toolName =
|
|
551
|
+
const toolName = approval?.toolName || 'unknown tool';
|
|
552
552
|
const entry = createInteractiveRequestCard(requestId, {
|
|
553
553
|
title: `${serverName} Tool Approval`,
|
|
554
554
|
subtitle: 'mcp tool approval',
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════
|
|
2
|
+
// SynaBun Neural Interface — Codex panel: native skills in the slash hints
|
|
3
|
+
// ═══════════════════════════════════════════
|
|
4
|
+
//
|
|
5
|
+
// Codex lists its skills itself (app-server skills/list): each with its name, its SKILL.md path and its scope.
|
|
6
|
+
// A hint keeps that path, so picking one sends Codex's own `skill` input (name + path: the exact skill, even when
|
|
7
|
+
// two share a name) with the prompt, instead of only the text "/name" (SK-050). Same-named skills are told apart
|
|
8
|
+
// by their scope in the hint. No DOM: cdx-tabs.js draws the hints, the tests read this.
|
|
9
|
+
|
|
10
|
+
const SCOPE_LABEL = { user: 'personal', repo: 'repository', system: 'Codex', admin: 'admin' };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Hint rows of native skills: `{ cmd, desc, skill: { name, path }, scope }`, enabled ones only, sorted.
|
|
14
|
+
* @param {object[]} skills skills/list entries (name, description, path, scope, enabled)
|
|
15
|
+
* @param {Set<string>} [taken] commands already shown (built-ins win their name)
|
|
16
|
+
*/
|
|
17
|
+
export function skillHintEntries(skills, taken = new Set()) {
|
|
18
|
+
const rows = (Array.isArray(skills) ? skills : [])
|
|
19
|
+
.filter((s) => s && s.enabled !== false)
|
|
20
|
+
.map((s) => {
|
|
21
|
+
const name = String(s.name || s.dirName || '').trim();
|
|
22
|
+
return { cmd: name ? `/${name}` : '', desc: String(s.description || '').trim(), skill: typeof s.path === 'string' && s.path ? { name, path: s.path } : null, scope: s.scope || null };
|
|
23
|
+
})
|
|
24
|
+
.filter((row) => row.cmd !== '/' && row.cmd && !taken.has(row.cmd));
|
|
25
|
+
const counts = rows.reduce((m, r) => m.set(r.cmd, (m.get(r.cmd) || 0) + 1), new Map());
|
|
26
|
+
for (const row of rows) {
|
|
27
|
+
if (counts.get(row.cmd) > 1) row.desc = `(${SCOPE_LABEL[row.scope] || row.scope || 'other'}) ${row.desc}`.trim();
|
|
28
|
+
}
|
|
29
|
+
return rows.sort((a, b) => a.cmd.localeCompare(b.cmd) || String(a.scope).localeCompare(String(b.scope)));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The native skill inputs a prompt carries: the picked skill, while the prompt still starts with its /name.
|
|
34
|
+
* @param {string} prompt the text being sent
|
|
35
|
+
* @param {{ cmd: string, name: string, path: string }|null} pending what was picked from the hints
|
|
36
|
+
* @returns {{ name: string, path: string }[]}
|
|
37
|
+
*/
|
|
38
|
+
export function skillsForPrompt(prompt, pending) {
|
|
39
|
+
if (!pending || typeof pending.cmd !== 'string' || typeof pending.path !== 'string') return [];
|
|
40
|
+
const text = String(prompt || '').trimStart();
|
|
41
|
+
if (text !== pending.cmd && !text.startsWith(`${pending.cmd} `) && !text.startsWith(`${pending.cmd}\n`)) return [];
|
|
42
|
+
return [{ name: pending.name, path: pending.path }];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The skills_list request the panel sends for a tab: Codex's app-server (0.164.0, checked 2026-10-23) keeps its skill
|
|
47
|
+
* list until asked with forceReload, and sends no notification of its own when a skill folder appears or changes, so
|
|
48
|
+
* after SynaBun installed, removed or changed a skill (skills:changed) the next request forces the reload; otherwise
|
|
49
|
+
* the cached list is enough. The forced reload also refreshes the skills the app-server offers its threads.
|
|
50
|
+
* @param {{ project?: string|null }} tab @param {boolean} changed whether a skills:changed arrived since the last list
|
|
51
|
+
*/
|
|
52
|
+
export function skillsListRequest(tab, changed) {
|
|
53
|
+
return { cwds: tab?.project ? [tab.project] : [], forceReload: changed === true };
|
|
54
|
+
}
|
|
@@ -352,6 +352,12 @@ export function injectStyles() {
|
|
|
352
352
|
display: inline-flex; align-items: center; gap: 3px;
|
|
353
353
|
position: relative;
|
|
354
354
|
}
|
|
355
|
+
/* SVGs with only a viewBox have platform-dependent intrinsic sizes. */
|
|
356
|
+
.cxp-toolbar-toggle > svg {
|
|
357
|
+
width: var(--cxp-space-3);
|
|
358
|
+
height: var(--cxp-space-3);
|
|
359
|
+
flex-shrink: 0;
|
|
360
|
+
}
|
|
355
361
|
.cxp-toolbar-toggle::after {
|
|
356
362
|
content: '';
|
|
357
363
|
position: absolute; bottom: 0; left: 25%; right: 25%;
|
|
@@ -774,6 +780,7 @@ export function injectStyles() {
|
|
|
774
780
|
/* ── Project bar and dropdowns ── */
|
|
775
781
|
.cxp-projectbar {
|
|
776
782
|
display: flex;
|
|
783
|
+
flex-wrap: wrap;
|
|
777
784
|
align-items: center;
|
|
778
785
|
gap: 4px;
|
|
779
786
|
padding: 4px 10px 0;
|
|
@@ -796,7 +803,6 @@ export function injectStyles() {
|
|
|
796
803
|
transition: background var(--cxp-dur-fast);
|
|
797
804
|
}
|
|
798
805
|
.cxp-dropdown-sm { max-width: 72px; }
|
|
799
|
-
#cxp-profile { max-width: 80px; }
|
|
800
806
|
.cxp-dropdown:hover {
|
|
801
807
|
background: var(--cxp-surface-1);
|
|
802
808
|
}
|
|
@@ -1691,6 +1697,7 @@ export function injectStyles() {
|
|
|
1691
1697
|
.cxp-thinking .cxp-msg-think-dots span:nth-child(2) { animation-delay: 0.2s; }
|
|
1692
1698
|
.cxp-think-dots span:nth-child(3),
|
|
1693
1699
|
.cxp-thinking .cxp-msg-think-dots span:nth-child(3) { animation-delay: 0.4s; }
|
|
1700
|
+
.cxp-reasoning[hidden] { display: none; }
|
|
1694
1701
|
.cxp-reasoning.cxp-reasoning-done .cxp-think-dots { display: none; }
|
|
1695
1702
|
.cxp-thinking {
|
|
1696
1703
|
display: flex;
|
|
@@ -2521,7 +2528,7 @@ export function injectStyles() {
|
|
|
2521
2528
|
}
|
|
2522
2529
|
/* The wrap draws the input's edge: 1px of padding over a border-coloured fill. */
|
|
2523
2530
|
.cxp-input-wrap {
|
|
2524
|
-
flex:
|
|
2531
|
+
flex: 0 0 auto; position: relative;
|
|
2525
2532
|
margin: 8px 8px 2px;
|
|
2526
2533
|
border-radius: var(--cxp-radius-lg);
|
|
2527
2534
|
padding: 1px;
|
|
@@ -2687,6 +2694,7 @@ export function injectStyles() {
|
|
|
2687
2694
|
background: var(--cxp-surface-2);
|
|
2688
2695
|
}
|
|
2689
2696
|
.cxp-projectbar-actions {
|
|
2697
|
+
flex-shrink: 0;
|
|
2690
2698
|
display: flex;
|
|
2691
2699
|
align-items: center;
|
|
2692
2700
|
gap: 2px;
|
|
@@ -2724,6 +2732,10 @@ export function injectStyles() {
|
|
|
2724
2732
|
animation: cxp-working 1.6s ease-in-out infinite;
|
|
2725
2733
|
flex-shrink: 0;
|
|
2726
2734
|
}
|
|
2735
|
+
/* A session that waits on you (an approval or a question card): the warn hairline and mark of
|
|
2736
|
+
the Assistant's and a detached window's pills, in place of the working look (paintTrayPill). */
|
|
2737
|
+
.cxp-session-pill.cxp-pill-attention { border-color: color-mix(in srgb, var(--cxp-warning) 42%, transparent); }
|
|
2738
|
+
.cxp-session-pill.cxp-pill-attention .term-minimized-pill-icon { color: var(--cxp-warning); }
|
|
2727
2739
|
.cxp-hint {
|
|
2728
2740
|
margin-top: 8px;
|
|
2729
2741
|
font-size: var(--cxp-fs-xs);
|
|
@@ -3083,7 +3095,7 @@ export function injectStyles() {
|
|
|
3083
3095
|
color: var(--cxp-text-2);
|
|
3084
3096
|
background: var(--cxp-surface-1);
|
|
3085
3097
|
margin-bottom: 2px;
|
|
3086
|
-
cursor:
|
|
3098
|
+
cursor: move;
|
|
3087
3099
|
}
|
|
3088
3100
|
.cxp-queue-item.dragging { opacity: 0.4; }
|
|
3089
3101
|
.cxp-queue-item.drag-over { box-shadow: inset 0 2px 0 var(--cxp-text-2); }
|