synabun 2.0.9 → 2.0.10
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 +29 -0
- package/README.md +1 -1
- package/THIRD-PARTY-LICENSES.md +46 -4
- package/launcher.mjs +9 -3
- package/lib/start-launcher.js +6 -1
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/neural-interface/i18n/en.json +218 -7
- package/neural-interface/i18n/pt-BR.json +220 -9
- 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 +21 -7
- package/neural-interface/lib/assistant-brains/opencode.js +13 -1
- package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +44 -0
- package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +57 -0
- package/neural-interface/lib/assistant-catalog.js +17 -2
- package/neural-interface/lib/assistant-dispatch.js +3 -0
- package/neural-interface/lib/assistant-envelope.js +19 -1
- package/neural-interface/lib/assistant-runtime.js +127 -8
- package/neural-interface/lib/claude-model-catalog.js +64 -14
- package/neural-interface/lib/codex-settings-schema.js +109 -47
- package/neural-interface/lib/editor-completion-opencode.js +132 -35
- package/neural-interface/lib/exec-loop-command.js +8 -1
- package/neural-interface/lib/launch-cache.js +293 -0
- package/neural-interface/lib/login-start.js +524 -0
- package/neural-interface/lib/native-loop-providers.js +18 -3
- package/neural-interface/lib/native-loop-runtime.js +19 -0
- package/neural-interface/lib/opencode-db-schema.js +75 -0
- package/neural-interface/lib/opencode-history.js +16 -1
- package/neural-interface/lib/opencode-protocol.js +173 -0
- package/neural-interface/lib/opencode-provider-view.js +81 -0
- package/neural-interface/lib/opencode-runtime-config.js +10 -3
- package/neural-interface/lib/opencode-serve-records.js +606 -0
- package/neural-interface/lib/opencode-v2-client.js +33 -6
- package/neural-interface/lib/opencode-v2-ws-requests.js +19 -5
- package/neural-interface/lib/opencode-worker-activity.js +229 -0
- package/neural-interface/lib/opencode2-client.js +760 -0
- package/neural-interface/lib/opencode2-proxy.js +116 -0
- package/neural-interface/lib/opencode2-translate.js +1008 -0
- package/neural-interface/lib/process-identity.js +361 -0
- package/neural-interface/lib/session-cache-builder.js +26 -5
- package/neural-interface/lib/session-title-generator.js +18 -0
- package/neural-interface/lib/style-guide/api.js +4 -3
- package/neural-interface/lib/untrusted-file-headers.js +27 -0
- package/neural-interface/package-lock.json +1343 -45
- package/neural-interface/package.json +5 -1
- package/neural-interface/public/index.html +2 -2
- package/neural-interface/public/shared/agent-runtime-options.js +55 -11
- package/neural-interface/public/shared/assistant/asst-agents-dock.js +172 -17
- package/neural-interface/public/shared/assistant/asst-api.js +11 -3
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +195 -80
- package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
- package/neural-interface/public/shared/assistant/asst-hosts.js +49 -2
- package/neural-interface/public/shared/assistant/asst-menu.js +77 -6
- package/neural-interface/public/shared/assistant/asst-panel.js +197 -33
- package/neural-interface/public/shared/assistant/asst-rack-styles.js +28 -10
- package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
- package/neural-interface/public/shared/assistant/asst-render.js +382 -36
- 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 +528 -0
- package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
- package/neural-interface/public/shared/assistant/asst-state.js +14 -0
- package/neural-interface/public/shared/assistant/asst-styles.js +43 -0
- package/neural-interface/public/shared/assistant/asst-tool-kinds.js +13 -1
- package/neural-interface/public/shared/cc-dropdown.js +480 -0
- package/neural-interface/public/shared/cdx/cdx-panel.js +13 -1
- package/neural-interface/public/shared/cdx/cdx-render.js +15 -3
- package/neural-interface/public/shared/cdx/cdx-styles.js +4 -0
- package/neural-interface/public/shared/cdx/cdx-tabs.js +149 -35
- package/neural-interface/public/shared/cp/cp-markdown.js +4 -57
- 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 +15 -5
- package/neural-interface/public/shared/file-links.js +73 -8
- package/neural-interface/public/shared/html-shell.js +74 -80
- package/neural-interface/public/shared/launch-prefetch.js +59 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-caps.js +3 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +7 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-modelpicker.js +54 -17
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +93 -2
- package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +3 -2
- 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 +1 -1
- 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 +16 -9
- package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +60 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +48 -19
- package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +195 -19
- package/neural-interface/public/shared/opencode-providers.js +39 -0
- package/neural-interface/public/shared/schedules-view.js +318 -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-data.js +88 -0
- package/neural-interface/public/shared/settings/settings-ia.js +17 -0
- package/neural-interface/public/shared/sidepanel-session-status.js +49 -0
- package/neural-interface/public/shared/styles.css +540 -371
- package/neural-interface/public/shared/ui-assistant.js +27 -5
- package/neural-interface/public/shared/ui-automation-studio.js +67 -27
- package/neural-interface/public/shared/ui-bookmarks.js +2 -1
- package/neural-interface/public/shared/ui-claude-panel.js +76 -8
- package/neural-interface/public/shared/ui-codex-panel.js +1 -0
- package/neural-interface/public/shared/ui-detail.js +6 -6
- package/neural-interface/public/shared/ui-file-links.js +1 -0
- package/neural-interface/public/shared/ui-image-gallery.js +6 -5
- package/neural-interface/public/shared/ui-invite.js +18 -2
- package/neural-interface/public/shared/ui-link.js +9 -9
- package/neural-interface/public/shared/ui-menubar.js +232 -33
- package/neural-interface/public/shared/ui-native-loop-router.js +2 -0
- package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
- package/neural-interface/public/shared/ui-schedules-studio.js +2099 -869
- package/neural-interface/public/shared/ui-sessions.js +15 -4
- package/neural-interface/public/shared/ui-settings.js +87 -36
- 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 +55 -4
- package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
- package/neural-interface/public/shared/ui-skills.js +70 -12
- package/neural-interface/public/shared/ui-sync.js +7 -0
- package/neural-interface/public/shared/ui-terminal.js +36 -20
- package/neural-interface/public/shared/ui-trash.js +8 -1
- package/neural-interface/public/shared/ui-tutorial-steps.js +7 -3
- package/neural-interface/public/shared/ui-tutorial.js +15 -5
- package/neural-interface/public/shared/ui-update.js +83 -14
- package/neural-interface/public/shared/ui-whiteboard.js +2 -1
- package/neural-interface/public/variant/2d/main.js +4 -1
- package/neural-interface/public/variant/3d/main.js +3 -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/scripts/build-vendor.mjs +84 -3
- package/neural-interface/server.js +1099 -286
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/synabun/modules/schedule.md +1 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════
|
|
2
|
+
// SynaBun Assistant — what a step line may say of a call
|
|
3
|
+
// ═══════════════════════════════════════════
|
|
4
|
+
// A worker's step line ("Running curl …", "Opening example.com/docs") names
|
|
5
|
+
// the call it is on, never what the call carries: no credential, no file body
|
|
6
|
+
// written inline. One rule for every place a step line is made: the server's
|
|
7
|
+
// OpenCode relay (lib/opencode-worker-activity.js, before anything leaves the
|
|
8
|
+
// process) and the page's stage and tray (asst-scenes.js compactActivity /
|
|
9
|
+
// stepLine, Claude and Codex workers). Credentials are masked before
|
|
10
|
+
// anything is clipped, so a cut never leaves half a key.
|
|
11
|
+
//
|
|
12
|
+
// No imports and no `document`: node:test and the server load it as it is.
|
|
13
|
+
|
|
14
|
+
/** What a masked value reads as. */
|
|
15
|
+
export const REDACTED = '••••';
|
|
16
|
+
|
|
17
|
+
// A credential's name: an environment variable, a query parameter, a JSON key, a header, a long flag.
|
|
18
|
+
const SECRET_NAME_RE = /token|secret|passw(?:or)?d|pwd|api[_-]?key|apikey|access[_-]?key|private[_-]?key|signature|credential|authori[sz]ation|(?:^|[_.-])(?:key|sig|pass|auth)$|^(?:key|sig|pass|auth)$/i;
|
|
19
|
+
// Counters and settings that only sound like one ("max_tokens", "token_count", "--tokenizer").
|
|
20
|
+
const NOT_SECRET_NAME_RE = /tokens$|tokens?[_-]?(?:count|usage|limit|budget|max|min)|max[_-]?tokens|tokeniz/i;
|
|
21
|
+
|
|
22
|
+
const isSecretName = (name) => SECRET_NAME_RE.test(name) && !NOT_SECRET_NAME_RE.test(name);
|
|
23
|
+
|
|
24
|
+
// Values a provider's own shape gives away, wherever they stand.
|
|
25
|
+
const KEY_SHAPES = [
|
|
26
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?(?:-----END [A-Z ]*PRIVATE KEY-----|$)/g,
|
|
27
|
+
/\bsk-ant-[A-Za-z0-9_-]{8,}/g, // Anthropic
|
|
28
|
+
/\bsk-(?:proj-|svcacct-|admin-|or-v1-)?[A-Za-z0-9_-]{16,}/g, // OpenAI, OpenRouter
|
|
29
|
+
/\b(?:sk|rk|pk)_(?:live|test)_[A-Za-z0-9]{8,}/g, // Stripe
|
|
30
|
+
/\bgh[pousr]_[A-Za-z0-9]{20,}/g, // GitHub
|
|
31
|
+
/\bgithub_pat_[A-Za-z0-9_]{20,}/g,
|
|
32
|
+
/\b(?:AKIA|ASIA|ABIA|ACCA)[0-9A-Z]{16}\b/g, // AWS access key id
|
|
33
|
+
/\bxox[abposr]-[A-Za-z0-9-]{10,}/g, // Slack
|
|
34
|
+
/\bAIza[0-9A-Za-z_-]{20,}/g, // Google
|
|
35
|
+
/\b(?:npm|hf|glpat|dop_v1)_[A-Za-z0-9_-]{20,}/g,
|
|
36
|
+
/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g, // a JWT
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
// `https://user:secret@host`: the password of a URL.
|
|
40
|
+
const USERINFO_RE = /\b([a-z][a-z0-9+.-]{0,30}:\/\/)([^\s/@:'"]{1,256}):([^\s/@'"]{1,512})@/gi;
|
|
41
|
+
// A header that carries a credential, up to the end of its value (a quote or the line's end): `-H "Authorization: Bearer …"`.
|
|
42
|
+
const HEADER_RE = /\b((?:proxy-)?authorization|cookie|set-cookie|x-[a-z0-9-]{0,40}(?:api-?key|token|secret|auth|signature)[a-z0-9-]{0,40}|api-?key)(["']?[ \t]*:[ \t]*["']?)([^\r\n"']+)/gi;
|
|
43
|
+
// An auth scheme and its credential outside a header.
|
|
44
|
+
const SCHEME_RE = /\b([Bb]earer|Token)([ \t]+)[A-Za-z0-9._~+/=-]{4,}|\b(Basic)([ \t]+)[A-Za-z0-9+/]{8,}={0,2}/g;
|
|
45
|
+
// `curl -u user:secret`.
|
|
46
|
+
const USER_FLAG_RE = /(^|\s)(-u|--user)([ \t]+|=)([^\s:'"]+):([^\s'"]+)/g;
|
|
47
|
+
// `name=value`, `name: value`, `"name": "value"`, `?name=value&`: the value of a credential's name. Names, schemes
|
|
48
|
+
// and header names are bounded so that a long token costs a linear scan, never a quadratic one.
|
|
49
|
+
const ASSIGN_RE = /([A-Za-z_][A-Za-z0-9_.-]{0,63})(["']?[ \t]*[:=][ \t]*["']?)/g;
|
|
50
|
+
const ASSIGN_VALUE_RE = /[^\s"'&;,|<>?)}\]]+/y; // read only after a credential's name: a long value is scanned once
|
|
51
|
+
// `--token value`, `--password "two words"`: a flag named like a credential, and the word after it.
|
|
52
|
+
const FLAG_RE = /(^|\s)(--?[A-Za-z][A-Za-z0-9_-]*)([ \t]+)("[^"]*"|'[^']*'|[^\s"'-][^\s"']*)/g;
|
|
53
|
+
|
|
54
|
+
// Only a credential's name takes its value: any other `name: value` gives up its value to the scan, so
|
|
55
|
+
// `Note: token=abc` still masks abc.
|
|
56
|
+
function redactAssignments(s) {
|
|
57
|
+
let out = '';
|
|
58
|
+
let last = 0;
|
|
59
|
+
ASSIGN_RE.lastIndex = 0;
|
|
60
|
+
for (let m = ASSIGN_RE.exec(s); m; m = ASSIGN_RE.exec(s)) {
|
|
61
|
+
const [head, name] = m;
|
|
62
|
+
const at = m.index + head.length;
|
|
63
|
+
ASSIGN_VALUE_RE.lastIndex = at;
|
|
64
|
+
const v = isSecretName(name) ? ASSIGN_VALUE_RE.exec(s)?.[0] : null;
|
|
65
|
+
if (!v || v === REDACTED) { ASSIGN_RE.lastIndex = m.index + name.length; continue; }
|
|
66
|
+
out += `${s.slice(last, at)}${REDACTED}`;
|
|
67
|
+
last = at + v.length;
|
|
68
|
+
ASSIGN_RE.lastIndex = last;
|
|
69
|
+
}
|
|
70
|
+
return out + s.slice(last);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* `text` with every credential masked: provider keys, private keys, a URL's password, credential headers, Bearer
|
|
75
|
+
* and Basic tokens, and the value of anything named like a credential (token=, key=, secret=, password=, sig=,
|
|
76
|
+
* GITHUB_TOKEN=, "api_key": …, --api-key …). Counters named like one ("max_tokens=10") are kept.
|
|
77
|
+
*/
|
|
78
|
+
export function redactSecrets(value) {
|
|
79
|
+
let s = value == null ? '' : String(value);
|
|
80
|
+
if (!s) return s;
|
|
81
|
+
for (const re of KEY_SHAPES) s = s.replace(re, REDACTED);
|
|
82
|
+
s = s.replace(USERINFO_RE, (whole, scheme, user) => `${scheme}${user}:${REDACTED}@`);
|
|
83
|
+
s = s.replace(HEADER_RE, (whole, name, sep, v) => (v.trim() === REDACTED ? whole : `${name}${sep}${REDACTED}`));
|
|
84
|
+
s = s.replace(SCHEME_RE, (whole, bearer, gap, basic, gap2) => `${bearer || basic}${gap || gap2}${REDACTED}`);
|
|
85
|
+
s = s.replace(USER_FLAG_RE, (whole, lead, flag, sep, user) => `${lead}${flag}${sep}${user}:${REDACTED}`);
|
|
86
|
+
s = redactAssignments(s);
|
|
87
|
+
s = s.replace(FLAG_RE, (whole, lead, flag, gap, v) => {
|
|
88
|
+
if (!isSecretName(flag.replace(/^-+/, '')) || v === REDACTED) return whole;
|
|
89
|
+
const quote = /^["']/.test(v) ? v[0] : '';
|
|
90
|
+
return `${lead}${flag}${gap}${quote}${REDACTED}${quote}`;
|
|
91
|
+
});
|
|
92
|
+
return s;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ── Commands ──
|
|
96
|
+
|
|
97
|
+
const COMMAND_SCAN_MAX = 16_000; // a step line shows 300 characters: nothing further in is read
|
|
98
|
+
// `<<EOF`, `<<-EOF`, `<< 'EOF'`, `<<"EOF"`, `<<\EOF` (never a here-string's `<<<`).
|
|
99
|
+
const HEREDOC_RE = /(^|[^<])<<(-?)[ \t]*(?:(['"])([A-Za-z_][\w.-]*)\3|\\?([A-Za-z_][\w.-]*))/g;
|
|
100
|
+
const HERESTRING_RE = /<<<[ \t]*(?:"(?:[^"\\]|\\.)*"|'[^']*'|\S+)/g;
|
|
101
|
+
// A shell word: quoted, $'…', or bare.
|
|
102
|
+
const WORD = String.raw`(?:"(?:[^"\\]|\\.)*"|'[^']*'|\$'(?:[^'\\]|\\.)*'|[^\s;&|<>"'])+`;
|
|
103
|
+
// echo / printf whose words go into a file (`> f`, `>> f`, `| tee f`): the words are the file's content.
|
|
104
|
+
const INLINE_WRITE_RE = new RegExp(String.raw`\b(echo|printf)[ \t]+${WORD}(?:[ \t]+${WORD})*(?=[ \t]*(?:\d?>>?|>\||\|[ \t]*(?:sudo[ \t]+)?tee\b))`, 'g');
|
|
105
|
+
// An interpreter's inline script (`python -c "…"`, `node -e '…'`): kept when it is a short one-liner.
|
|
106
|
+
const INLINE_SCRIPT_RE = /\b((?:python[0-9.]*|node|deno|bun|perl|ruby|php|osascript)(?:[ \t]+-[A-Za-z]+)*[ \t]+(?:-c|-e|--eval|-p|--print))[ \t]+("(?:[^"\\]|\\.)*"|'[^']*')/g;
|
|
107
|
+
const INLINE_SCRIPT_MAX = 60;
|
|
108
|
+
|
|
109
|
+
/** A heredoc's body omitted: the line that opens it says `…`, the lines up to its terminator go. */
|
|
110
|
+
function dropHeredocs(text) {
|
|
111
|
+
const out = [];
|
|
112
|
+
const pending = []; // terminators still to come, in order
|
|
113
|
+
for (const line of text.split(/\r?\n/)) {
|
|
114
|
+
if (pending.length) {
|
|
115
|
+
const want = pending[0];
|
|
116
|
+
if ((want.dash ? line.replace(/^\t+/, '') : line).trim() === want.word) pending.shift();
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
HEREDOC_RE.lastIndex = 0;
|
|
120
|
+
let found = false;
|
|
121
|
+
for (let m = HEREDOC_RE.exec(line); m; m = HEREDOC_RE.exec(line)) { pending.push({ word: m[4] || m[5], dash: m[2] === '-' }); found = true; }
|
|
122
|
+
out.push(found ? `${line} …` : line);
|
|
123
|
+
}
|
|
124
|
+
return out.join('\n');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* A shell command as a step line may say it: heredoc and here-string bodies, the words echo / printf write into a
|
|
129
|
+
* file and long inline scripts omitted (`…`), then every credential masked (redactSecrets). Not clipped.
|
|
130
|
+
*/
|
|
131
|
+
export function safeCommand(value) {
|
|
132
|
+
let s = Array.isArray(value) ? value.map((v) => (v == null ? '' : String(v))).join(' ') : (value == null ? '' : String(value));
|
|
133
|
+
if (!s) return '';
|
|
134
|
+
if (s.length > COMMAND_SCAN_MAX) s = s.slice(0, COMMAND_SCAN_MAX);
|
|
135
|
+
s = dropHeredocs(s);
|
|
136
|
+
s = s.replace(HERESTRING_RE, '<<< …');
|
|
137
|
+
s = s.replace(INLINE_WRITE_RE, '$1 …');
|
|
138
|
+
s = s.replace(INLINE_SCRIPT_RE, (whole, head, body) => (body.length > INLINE_SCRIPT_MAX || /[\r\n]/.test(body) ? `${head} …` : whole));
|
|
139
|
+
return redactSecrets(s);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// ── Addresses ──
|
|
143
|
+
|
|
144
|
+
const OPAQUE_SCHEMES = new Set(['mailto:', 'tel:', 'sms:', 'data:', 'blob:', 'javascript:', 'vbscript:', 'about:']);
|
|
145
|
+
|
|
146
|
+
/** An address as a step line may say it: scheme://host/path, with no user, password, query or fragment. */
|
|
147
|
+
export function safeUrl(value) {
|
|
148
|
+
const s = value == null ? '' : String(value).trim();
|
|
149
|
+
if (!s) return '';
|
|
150
|
+
let url = null;
|
|
151
|
+
try { url = new URL(s); } catch { url = null; }
|
|
152
|
+
if (url && url.host) return redactSecrets(`${url.protocol}//${url.host}${url.pathname}`);
|
|
153
|
+
if (url && url.protocol === 'file:') return redactSecrets(`file://${url.pathname}`);
|
|
154
|
+
if (url && OPAQUE_SCHEMES.has(url.protocol)) return url.protocol; // what follows is no place: an address, a page's content
|
|
155
|
+
// No scheme ("example.com/docs?token=…", "/api/x?key=…"): everything before the query.
|
|
156
|
+
return redactSecrets(s.split(/[?#]/)[0]);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** Input keys a step line reads as a command, and as an address. */
|
|
160
|
+
export const COMMAND_KEYS = Object.freeze(['command', 'cmd']);
|
|
161
|
+
export const URL_KEYS = Object.freeze(['url', 'href']);
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* A call's input as a step line may read it (a copy): a command through safeCommand, an address through safeUrl,
|
|
165
|
+
* every other string through redactSecrets, nested lists and objects too (a plan's items). Nothing is clipped.
|
|
166
|
+
*/
|
|
167
|
+
export function safeStepInput(input, depth = 0) {
|
|
168
|
+
if (Array.isArray(input)) return depth > 4 ? [] : input.map((v) => safeStepValue('', v, depth + 1));
|
|
169
|
+
if (!input || typeof input !== 'object') return {};
|
|
170
|
+
const out = {};
|
|
171
|
+
for (const [key, v] of Object.entries(input)) out[key] = safeStepValue(key, v, depth + 1);
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const STRING_SCAN_MAX = 4_000; // no step line reads further into a field (an edit's text, a file written whole)
|
|
176
|
+
|
|
177
|
+
function safeStepValue(key, v, depth) {
|
|
178
|
+
if (typeof v === 'string') {
|
|
179
|
+
if (COMMAND_KEYS.includes(key)) return safeCommand(v);
|
|
180
|
+
if (URL_KEYS.includes(key)) return safeUrl(v);
|
|
181
|
+
return redactSecrets(v.length > STRING_SCAN_MAX ? v.slice(0, STRING_SCAN_MAX) : v);
|
|
182
|
+
}
|
|
183
|
+
if (Array.isArray(v) && COMMAND_KEYS.includes(key) && v.every((x) => typeof x === 'string')) return v.map((x) => safeCommand(x));
|
|
184
|
+
if (v && typeof v === 'object') return depth > 4 ? {} : safeStepInput(v, depth);
|
|
185
|
+
return v;
|
|
186
|
+
}
|