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.
Files changed (679) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +25 -2
  3. package/THIRD-PARTY-LICENSES.md +68 -4
  4. package/bin/synabun.js +71 -24
  5. package/docs/whatsapp.md +2 -2
  6. package/hooks/claude-code/pre-websearch.mjs +12 -1
  7. package/hooks/claude-code/shared.mjs +5 -0
  8. package/hooks/claude-code/stop.mjs +1 -1
  9. package/launcher.mjs +9 -3
  10. package/lib/claude-hooks.js +172 -18
  11. package/lib/client-config-repair.js +17 -8
  12. package/lib/desktop-app.js +7 -1
  13. package/lib/external-tools.js +1 -1
  14. package/lib/first-launch-protection.js +57 -12
  15. package/lib/mcp-dist.js +176 -0
  16. package/lib/release-npm-ci.mjs +138 -0
  17. package/lib/release-publish.mjs +91 -0
  18. package/lib/release-scan.mjs +50 -0
  19. package/lib/server-crash-record.js +123 -0
  20. package/lib/server-exit.js +318 -0
  21. package/lib/server-supervisor.js +508 -0
  22. package/lib/start-launcher.js +43 -5
  23. package/lib/tools-cli.js +45 -0
  24. package/lib/update-snapshot.js +228 -0
  25. package/lib/virustotal.mjs +192 -0
  26. package/lib/windows-crash-event.js +269 -0
  27. package/mcp-server/dist/http.d.ts +20 -1
  28. package/mcp-server/dist/http.d.ts.map +1 -1
  29. package/mcp-server/dist/http.js +59 -12
  30. package/mcp-server/dist/http.js.map +1 -1
  31. package/mcp-server/dist/index.d.ts +33 -27
  32. package/mcp-server/dist/index.d.ts.map +1 -1
  33. package/mcp-server/dist/index.js +128 -143
  34. package/mcp-server/dist/index.js.map +1 -1
  35. package/mcp-server/dist/preload.js +1 -1
  36. package/mcp-server/dist/preload.js.map +1 -1
  37. package/mcp-server/dist/services/codex-config-heal.d.ts +6 -2
  38. package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
  39. package/mcp-server/dist/services/codex-config-heal.js +81 -28
  40. package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
  41. package/mcp-server/dist/services/memory-judge-backfill.d.ts +6 -0
  42. package/mcp-server/dist/services/memory-judge-backfill.d.ts.map +1 -1
  43. package/mcp-server/dist/services/memory-judge-backfill.js +7 -1
  44. package/mcp-server/dist/services/memory-judge-backfill.js.map +1 -1
  45. package/mcp-server/dist/services/neural-interface.d.ts +16 -10
  46. package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
  47. package/mcp-server/dist/services/neural-interface.js +67 -11
  48. package/mcp-server/dist/services/neural-interface.js.map +1 -1
  49. package/mcp-server/dist/services/server-instructions.d.ts +7 -2
  50. package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
  51. package/mcp-server/dist/services/server-instructions.js +20 -62
  52. package/mcp-server/dist/services/server-instructions.js.map +1 -1
  53. package/mcp-server/dist/services/tool-catalog.d.ts +120 -0
  54. package/mcp-server/dist/services/tool-catalog.d.ts.map +1 -0
  55. package/mcp-server/dist/services/tool-catalog.js +339 -0
  56. package/mcp-server/dist/services/tool-catalog.js.map +1 -0
  57. package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts +12 -0
  58. package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts.map +1 -0
  59. package/mcp-server/dist/services/tool-list-refresh-barrier.js +40 -0
  60. package/mcp-server/dist/services/tool-list-refresh-barrier.js.map +1 -0
  61. package/mcp-server/dist/services/tool-list.d.ts +108 -0
  62. package/mcp-server/dist/services/tool-list.d.ts.map +1 -0
  63. package/mcp-server/dist/services/tool-list.js +334 -0
  64. package/mcp-server/dist/services/tool-list.js.map +1 -0
  65. package/mcp-server/dist/services/tool-runtime.d.ts +161 -0
  66. package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -0
  67. package/mcp-server/dist/services/tool-runtime.js +400 -0
  68. package/mcp-server/dist/services/tool-runtime.js.map +1 -0
  69. package/mcp-server/dist/services/whiteboard-geometry.d.ts +26 -2
  70. package/mcp-server/dist/services/whiteboard-geometry.d.ts.map +1 -1
  71. package/mcp-server/dist/services/whiteboard-geometry.js +91 -8
  72. package/mcp-server/dist/services/whiteboard-geometry.js.map +1 -1
  73. package/mcp-server/dist/tools/agents.d.ts +10 -10
  74. package/mcp-server/dist/tools/agents.d.ts.map +1 -1
  75. package/mcp-server/dist/tools/agents.js +22 -13
  76. package/mcp-server/dist/tools/agents.js.map +1 -1
  77. package/mcp-server/dist/tools/browser-batch.d.ts +3 -3
  78. package/mcp-server/dist/tools/image-tools.d.ts +1 -1
  79. package/mcp-server/dist/tools/image-tools.js +1 -1
  80. package/mcp-server/dist/tools/skill-tools.d.ts +505 -0
  81. package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -0
  82. package/mcp-server/dist/tools/skill-tools.js +639 -0
  83. package/mcp-server/dist/tools/skill-tools.js.map +1 -0
  84. package/mcp-server/dist/tools/skill.d.ts +7 -0
  85. package/mcp-server/dist/tools/skill.d.ts.map +1 -0
  86. package/mcp-server/dist/tools/skill.js +11 -0
  87. package/mcp-server/dist/tools/skill.js.map +1 -0
  88. package/mcp-server/dist/tools/tool-groups.d.ts +68 -0
  89. package/mcp-server/dist/tools/tool-groups.d.ts.map +1 -0
  90. package/mcp-server/dist/tools/tool-groups.js +147 -0
  91. package/mcp-server/dist/tools/tool-groups.js.map +1 -0
  92. package/mcp-server/dist/tools/whiteboard-format.d.ts.map +1 -1
  93. package/mcp-server/dist/tools/whiteboard-format.js +7 -4
  94. package/mcp-server/dist/tools/whiteboard-format.js.map +1 -1
  95. package/mcp-server/dist/tools/whiteboard-tools.d.ts +64 -13
  96. package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
  97. package/mcp-server/dist/tools/whiteboard-tools.js +30 -5
  98. package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
  99. package/mcp-server/package-lock.json +2 -2
  100. package/mcp-server/package.json +1 -1
  101. package/mcp-server/src/http.ts +75 -12
  102. package/mcp-server/src/index.ts +147 -154
  103. package/mcp-server/src/preload.ts +12 -12
  104. package/mcp-server/src/services/codex-config-heal.ts +80 -29
  105. package/mcp-server/src/services/memory-judge-backfill.ts +7 -1
  106. package/mcp-server/src/services/neural-interface.ts +79 -20
  107. package/mcp-server/src/services/server-instructions.ts +27 -63
  108. package/mcp-server/src/services/tool-catalog.ts +403 -0
  109. package/mcp-server/src/services/tool-list-refresh-barrier.ts +33 -0
  110. package/mcp-server/src/services/tool-list.ts +410 -0
  111. package/mcp-server/src/services/tool-runtime.ts +457 -0
  112. package/mcp-server/src/services/whiteboard-geometry.ts +94 -9
  113. package/mcp-server/src/tools/agents.ts +22 -14
  114. package/mcp-server/src/tools/image-tools.ts +1 -1
  115. package/mcp-server/src/tools/skill-tools.ts +589 -0
  116. package/mcp-server/src/tools/skill.ts +13 -0
  117. package/mcp-server/src/tools/tool-groups.ts +164 -0
  118. package/mcp-server/src/tools/whiteboard-format.ts +9 -3
  119. package/mcp-server/src/tools/whiteboard-tools.ts +39 -5
  120. package/neural-interface/i18n/en.json +3680 -206
  121. package/neural-interface/i18n/pt-BR.json +3628 -157
  122. package/neural-interface/lib/account-usage.js +5 -3
  123. package/neural-interface/lib/app-controls-api.js +161 -0
  124. package/neural-interface/lib/assistant-api.js +148 -35
  125. package/neural-interface/lib/assistant-brains/claude.js +4 -3
  126. package/neural-interface/lib/assistant-brains/codex-browser-policy-hook.mjs +12 -2
  127. package/neural-interface/lib/assistant-brains/codex-route-gate-hook.mjs +32 -9
  128. package/neural-interface/lib/assistant-brains/codex.js +9 -5
  129. package/neural-interface/lib/assistant-brains/opencode.js +122 -44
  130. package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +59 -0
  131. package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +97 -0
  132. package/neural-interface/lib/assistant-catalog.js +23 -9
  133. package/neural-interface/lib/assistant-dispatch.js +874 -156
  134. package/neural-interface/lib/assistant-envelope.js +22 -2
  135. package/neural-interface/lib/assistant-persona.js +80 -11
  136. package/neural-interface/lib/assistant-plan-permissions.js +10 -9
  137. package/neural-interface/lib/assistant-route-gate-codex.js +3 -0
  138. package/neural-interface/lib/assistant-route-gate.js +6 -4
  139. package/neural-interface/lib/assistant-router.js +13 -8
  140. package/neural-interface/lib/assistant-runtime.js +183 -26
  141. package/neural-interface/lib/assistant-task-prompt.js +78 -14
  142. package/neural-interface/lib/assistant-tools.js +51 -0
  143. package/neural-interface/lib/backup-service.js +620 -3
  144. package/neural-interface/lib/backup-zip-reader.js +10 -5
  145. package/neural-interface/lib/backup-zip-writer.js +257 -0
  146. package/neural-interface/lib/browser-execution.js +10 -2
  147. package/neural-interface/lib/browser-guard-cdp.js +83 -0
  148. package/neural-interface/lib/browser-network-guard.js +284 -0
  149. package/neural-interface/lib/browser-policy-roots.js +64 -0
  150. package/neural-interface/lib/browser-tool-policy.js +186 -31
  151. package/neural-interface/lib/claude-agent-bridge.js +4 -2
  152. package/neural-interface/lib/claude-hooks-status.js +103 -0
  153. package/neural-interface/lib/claude-model-catalog.js +64 -14
  154. package/neural-interface/lib/claude-temporary.js +5 -11
  155. package/neural-interface/lib/cli-install.js +18 -138
  156. package/neural-interface/lib/cli-resolver.js +4 -1
  157. package/neural-interface/lib/cli-update-planner.js +32 -31
  158. package/neural-interface/lib/cloudflared/tunnel.js +42 -2
  159. package/neural-interface/lib/codex-mcp-approvals.js +11 -0
  160. package/neural-interface/lib/codex-settings-schema.js +109 -47
  161. package/neural-interface/lib/codex-worker-app-server.js +172 -0
  162. package/neural-interface/lib/confined-fs.js +30 -3
  163. package/neural-interface/lib/crash-notice-api.js +98 -0
  164. package/neural-interface/lib/editor-completion-opencode.js +164 -67
  165. package/neural-interface/lib/exec-loop-command.js +4 -1
  166. package/neural-interface/lib/http-guards.js +8 -2
  167. package/neural-interface/lib/install-details.js +4 -1
  168. package/neural-interface/lib/launch-cache.js +293 -0
  169. package/neural-interface/lib/login-start.js +524 -0
  170. package/neural-interface/lib/mcp-agent-servers.js +67 -0
  171. package/neural-interface/lib/mcp-client-config.js +0 -29
  172. package/neural-interface/lib/mcp-external-servers.js +323 -0
  173. package/neural-interface/lib/{mcp-profile-refresh-coordinator.js → mcp-tools-refresh-coordinator.js} +4 -4
  174. package/neural-interface/lib/morelogin.js +30 -0
  175. package/neural-interface/lib/native-loop-providers.js +565 -50
  176. package/neural-interface/lib/native-loop-runtime.js +287 -41
  177. package/neural-interface/lib/opencode-config.js +557 -0
  178. package/neural-interface/lib/opencode-db-schema.js +58 -0
  179. package/neural-interface/lib/opencode-history.js +49 -204
  180. package/neural-interface/lib/opencode-mcp-ready.js +108 -0
  181. package/neural-interface/lib/opencode-native-boundary.js +44 -0
  182. package/neural-interface/lib/opencode-protocol.js +310 -0
  183. package/neural-interface/lib/opencode-provider-view.js +81 -0
  184. package/neural-interface/lib/opencode-runtime-config.js +32 -15
  185. package/neural-interface/lib/opencode-serve-records.js +624 -0
  186. package/neural-interface/lib/opencode-v2-client.js +53 -131
  187. package/neural-interface/lib/opencode-v2-ws-requests.js +35 -195
  188. package/neural-interface/lib/opencode-worker-activity.js +229 -0
  189. package/neural-interface/lib/opencode-worker-data.js +27 -0
  190. package/neural-interface/lib/opencode2-client.js +796 -0
  191. package/neural-interface/lib/opencode2-proxy.js +76 -0
  192. package/neural-interface/lib/opencode2-translate.js +1057 -0
  193. package/neural-interface/lib/owner-authority.js +249 -0
  194. package/neural-interface/lib/page-session.js +275 -0
  195. package/neural-interface/lib/peer-identity.js +763 -0
  196. package/neural-interface/lib/process-identity.js +361 -0
  197. package/neural-interface/lib/request-gate.js +17 -2
  198. package/neural-interface/lib/rulesets/api.js +1 -1
  199. package/neural-interface/lib/rulesets/fs-safe.js +1 -1
  200. package/neural-interface/lib/rulesets/installer.js +92 -27
  201. package/neural-interface/lib/rulesets/json-edit.js +1 -1
  202. package/neural-interface/lib/session-cache-builder.js +18 -10
  203. package/neural-interface/lib/session-title-generator.js +58 -18
  204. package/neural-interface/lib/skills/api-v2.js +495 -0
  205. package/neural-interface/lib/skills/bundle.js +418 -0
  206. package/neural-interface/lib/skills/catalog.js +294 -0
  207. package/neural-interface/lib/skills/creation-api.js +191 -0
  208. package/neural-interface/lib/skills/creation-brief.js +247 -0
  209. package/neural-interface/lib/skills/creation-sources.js +267 -0
  210. package/neural-interface/lib/skills/creation.js +843 -0
  211. package/neural-interface/lib/skills/deploy.js +564 -0
  212. package/neural-interface/lib/skills/digest.js +119 -0
  213. package/neural-interface/lib/skills/discover.js +111 -0
  214. package/neural-interface/lib/skills/draft-confinement.js +214 -0
  215. package/neural-interface/lib/skills/eval-confinement.js +397 -0
  216. package/neural-interface/lib/skills/eval-sandbox.js +280 -0
  217. package/neural-interface/lib/skills/eval-trace.js +119 -0
  218. package/neural-interface/lib/skills/evals-api.js +212 -0
  219. package/neural-interface/lib/skills/evals.js +1573 -0
  220. package/neural-interface/lib/skills/export.js +200 -0
  221. package/neural-interface/lib/skills/frontmatter.js +64 -0
  222. package/neural-interface/lib/skills/health.js +75 -0
  223. package/neural-interface/lib/skills/json-edit.js +165 -0
  224. package/neural-interface/lib/skills/known-bridge-digests.json +387 -0
  225. package/neural-interface/lib/skills/known-bridges.js +96 -0
  226. package/neural-interface/lib/skills/library.js +823 -0
  227. package/neural-interface/lib/skills/local-store.js +21 -0
  228. package/neural-interface/lib/skills/migration.js +433 -0
  229. package/neural-interface/lib/skills/operations.js +45 -0
  230. package/neural-interface/lib/skills/ownership.js +427 -0
  231. package/neural-interface/lib/skills/packages.js +88 -0
  232. package/neural-interface/lib/skills/reviews.js +212 -0
  233. package/neural-interface/lib/skills/revision.js +80 -0
  234. package/neural-interface/lib/skills/roots.js +262 -0
  235. package/neural-interface/lib/skills/runtime-checks.js +355 -0
  236. package/neural-interface/lib/skills/scan-assets.js +252 -0
  237. package/neural-interface/lib/skills/scan-context.js +26 -0
  238. package/neural-interface/lib/skills/scan-shell.js +324 -0
  239. package/neural-interface/lib/skills/scan.js +364 -0
  240. package/neural-interface/lib/skills/scanners.js +54 -0
  241. package/neural-interface/lib/skills/service.js +522 -0
  242. package/neural-interface/lib/skills/telemetry.js +113 -0
  243. package/neural-interface/lib/sqlite-integrity-worker.js +22 -0
  244. package/neural-interface/lib/style-guide/api.js +4 -3
  245. package/neural-interface/lib/tool-lists.js +124 -0
  246. package/neural-interface/lib/untrusted-file-headers.js +27 -0
  247. package/neural-interface/lib/whatsapp/bridge.js +6 -3
  248. package/neural-interface/lib/worker-confinement.js +1192 -0
  249. package/neural-interface/lib/worker-guard-setting.js +56 -0
  250. package/neural-interface/lib/worker-mcp-channel.js +175 -0
  251. package/neural-interface/lib/worker-relay-ports.js +227 -0
  252. package/neural-interface/lib/worker-resume.js +229 -0
  253. package/neural-interface/lib/worker-sandbox.js +299 -0
  254. package/neural-interface/package-lock.json +1354 -50
  255. package/neural-interface/package.json +6 -2
  256. package/neural-interface/public/index.html +5 -3
  257. package/neural-interface/public/index2d.html +19 -11
  258. package/neural-interface/public/onboarding.html +2 -2
  259. package/neural-interface/public/shared/account-menu.js +8 -5
  260. package/neural-interface/public/shared/agent-runtime-options.js +76 -16
  261. package/neural-interface/public/shared/api.js +1527 -1336
  262. package/neural-interface/public/shared/app-frame.js +192 -0
  263. package/neural-interface/public/shared/assistant/asst-agents-dock.js +205 -19
  264. package/neural-interface/public/shared/assistant/asst-api.js +11 -3
  265. package/neural-interface/public/shared/assistant/asst-ask-styles.js +270 -0
  266. package/neural-interface/public/shared/assistant/asst-ask-tail.js +118 -0
  267. package/neural-interface/public/shared/assistant/asst-ask.js +397 -0
  268. package/neural-interface/public/shared/assistant/asst-brain-picker.js +241 -112
  269. package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
  270. package/neural-interface/public/shared/assistant/asst-control.js +157 -26
  271. package/neural-interface/public/shared/assistant/asst-followups-card.js +383 -0
  272. package/neural-interface/public/shared/assistant/asst-followups.js +417 -0
  273. package/neural-interface/public/shared/assistant/asst-hosts.js +49 -2
  274. package/neural-interface/public/shared/assistant/asst-limit-dock.js +40 -0
  275. package/neural-interface/public/shared/assistant/asst-limit-wait.js +294 -0
  276. package/neural-interface/public/shared/assistant/asst-limit.js +168 -0
  277. package/neural-interface/public/shared/assistant/asst-mascot.js +49 -12
  278. package/neural-interface/public/shared/assistant/asst-menu.js +84 -12
  279. package/neural-interface/public/shared/assistant/asst-panel.js +303 -44
  280. package/neural-interface/public/shared/assistant/asst-rack-styles.js +93 -58
  281. package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
  282. package/neural-interface/public/shared/assistant/asst-render.js +770 -100
  283. package/neural-interface/public/shared/assistant/asst-route.js +83 -12
  284. package/neural-interface/public/shared/assistant/asst-run-stage.js +231 -0
  285. package/neural-interface/public/shared/assistant/asst-sanitize.js +193 -3
  286. package/neural-interface/public/shared/assistant/asst-scene-styles.js +273 -0
  287. package/neural-interface/public/shared/assistant/asst-scenes.js +530 -0
  288. package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
  289. package/neural-interface/public/shared/assistant/asst-sidepanel.js +67 -4
  290. package/neural-interface/public/shared/assistant/asst-slash.js +9 -7
  291. package/neural-interface/public/shared/assistant/asst-state.js +25 -15
  292. package/neural-interface/public/shared/assistant/asst-stop.js +127 -0
  293. package/neural-interface/public/shared/assistant/asst-styles.js +102 -21
  294. package/neural-interface/public/shared/assistant/asst-tool-kinds.js +165 -13
  295. package/neural-interface/public/shared/automation-context.js +5 -2
  296. package/neural-interface/public/shared/cc-dropdown.js +550 -0
  297. package/neural-interface/public/shared/cdx/cdx-context-menu.js +10 -9
  298. package/neural-interface/public/shared/cdx/cdx-copy.js +16 -0
  299. package/neural-interface/public/shared/cdx/cdx-output-model.js +22 -1
  300. package/neural-interface/public/shared/cdx/cdx-output.js +8 -7
  301. package/neural-interface/public/shared/cdx/cdx-panel.js +58 -150
  302. package/neural-interface/public/shared/cdx/cdx-protocol.js +28 -1
  303. package/neural-interface/public/shared/cdx/cdx-render.js +62 -32
  304. package/neural-interface/public/shared/cdx/cdx-requests.js +3 -3
  305. package/neural-interface/public/shared/cdx/cdx-skill-hints.js +54 -0
  306. package/neural-interface/public/shared/cdx/cdx-styles.js +15 -3
  307. package/neural-interface/public/shared/cdx/cdx-tabs.js +201 -74
  308. package/neural-interface/public/shared/cdx/cdx-ws.js +0 -1
  309. package/neural-interface/public/shared/cli-install-view.js +4 -8
  310. package/neural-interface/public/shared/cli-status.js +2 -2
  311. package/neural-interface/public/shared/constants.js +2 -2
  312. package/neural-interface/public/shared/context-menu-areas.js +34 -0
  313. package/neural-interface/public/shared/context-menu-logic.js +243 -0
  314. package/neural-interface/public/shared/context-menu-model.js +366 -0
  315. package/neural-interface/public/shared/context-menu.js +372 -0
  316. package/neural-interface/public/shared/cp/cp-context-menu.js +10 -9
  317. package/neural-interface/public/shared/cp/cp-markdown.js +4 -57
  318. package/neural-interface/public/shared/crash-notice-view.js +168 -0
  319. package/neural-interface/public/shared/data-cache.js +223 -0
  320. package/neural-interface/public/shared/desktop-bridge.js +11 -0
  321. package/neural-interface/public/shared/desktop-titlebar-view.js +78 -1
  322. package/neural-interface/public/shared/desktop-titlebar.js +214 -28
  323. package/neural-interface/public/shared/desktop-update-view.js +35 -5
  324. package/neural-interface/public/shared/editor/editor-panel-logic.js +2 -2
  325. package/neural-interface/public/shared/file-links.js +73 -8
  326. package/neural-interface/public/shared/html-shell.js +78 -86
  327. package/neural-interface/public/shared/i18n.js +2 -0
  328. package/neural-interface/public/shared/launch-prefetch.js +59 -0
  329. package/neural-interface/public/shared/ocp-v2/ocp-v2-approvals.js +7 -7
  330. package/neural-interface/public/shared/ocp-v2/ocp-v2-binding.js +4 -4
  331. package/neural-interface/public/shared/ocp-v2/ocp-v2-caps.js +3 -2
  332. package/neural-interface/public/shared/ocp-v2/ocp-v2-changes-logic.js +3 -101
  333. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +9 -2
  334. package/neural-interface/public/shared/ocp-v2/ocp-v2-compact-button.js +1 -3
  335. package/neural-interface/public/shared/ocp-v2/ocp-v2-composer-logic.js +2 -6
  336. package/neural-interface/public/shared/ocp-v2/ocp-v2-context-menu.js +11 -11
  337. package/neural-interface/public/shared/ocp-v2/ocp-v2-context-model.js +0 -3
  338. package/neural-interface/public/shared/ocp-v2/ocp-v2-events.js +8 -4
  339. package/neural-interface/public/shared/ocp-v2/ocp-v2-manager.js +7 -7
  340. package/neural-interface/public/shared/ocp-v2/ocp-v2-modelpicker.js +54 -17
  341. package/neural-interface/public/shared/ocp-v2/ocp-v2-outcome-notifications.js +16 -0
  342. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +140 -254
  343. package/neural-interface/public/shared/ocp-v2/ocp-v2-plan.js +1 -2
  344. package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +97 -203
  345. package/neural-interface/public/shared/ocp-v2/ocp-v2-providers.js +11 -9
  346. package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +15 -4
  347. package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -22
  348. package/neural-interface/public/shared/ocp-v2/ocp-v2-send-logic.js +401 -0
  349. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +20 -13
  350. package/neural-interface/public/shared/ocp-v2/ocp-v2-session-actions.js +8 -61
  351. package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +53 -82
  352. package/neural-interface/public/shared/ocp-v2/ocp-v2-slash-hints.js +16 -15
  353. package/neural-interface/public/shared/ocp-v2/ocp-v2-state.js +8 -21
  354. package/neural-interface/public/shared/ocp-v2/ocp-v2-status-logic.js +1 -99
  355. package/neural-interface/public/shared/ocp-v2/ocp-v2-status.js +5 -35
  356. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +48 -40
  357. package/neural-interface/public/shared/ocp-v2/{ocp-v2-profile-inheritance.js → ocp-v2-tools-inheritance.js} +16 -16
  358. package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +205 -62
  359. package/neural-interface/public/shared/opencode-providers.js +39 -0
  360. package/neural-interface/public/shared/page-session.js +96 -0
  361. package/neural-interface/public/shared/registry.js +5 -3
  362. package/neural-interface/public/shared/retired-2d.js +3 -0
  363. package/neural-interface/public/shared/schedules-view.js +452 -0
  364. package/neural-interface/public/shared/settings/settings-app-pane.js +335 -0
  365. package/neural-interface/public/shared/settings/settings-app.js +243 -0
  366. package/neural-interface/public/shared/settings/settings-claude-hooks.js +135 -0
  367. package/neural-interface/public/shared/settings/settings-data.js +90 -0
  368. package/neural-interface/public/shared/settings/settings-ia.js +23 -6
  369. package/neural-interface/public/shared/settings/settings-opencode.js +89 -0
  370. package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +265 -0
  371. package/neural-interface/public/shared/settings/settings-skill-folders.js +130 -0
  372. package/neural-interface/public/shared/settings/settings-worker-guard.js +72 -0
  373. package/neural-interface/public/shared/sidepanel-session-status.js +49 -0
  374. package/neural-interface/public/shared/skills/ss-args.js +96 -0
  375. package/neural-interface/public/shared/skills/ss-creation.js +219 -0
  376. package/neural-interface/public/shared/skills/ss-dialog.js +130 -0
  377. package/neural-interface/public/shared/skills/ss-doc.js +173 -0
  378. package/neural-interface/public/shared/skills/ss-eval-adapters.js +269 -0
  379. package/neural-interface/public/shared/skills/ss-eval-grade.js +359 -0
  380. package/neural-interface/public/shared/skills/ss-eval-optimise.js +153 -0
  381. package/neural-interface/public/shared/skills/ss-eval-plan.js +315 -0
  382. package/neural-interface/public/shared/skills/ss-evals.js +417 -0
  383. package/neural-interface/public/shared/skills/ss-form.js +159 -0
  384. package/neural-interface/public/shared/skills/ss-frontmatter.js +376 -0
  385. package/neural-interface/public/shared/skills/ss-ids.js +32 -0
  386. package/neural-interface/public/shared/skills/ss-lint.js +141 -0
  387. package/neural-interface/public/shared/skills/ss-presets.js +117 -0
  388. package/neural-interface/public/shared/skills/ss-profiles.js +475 -0
  389. package/neural-interface/public/shared/skills/ss-resources.js +165 -0
  390. package/neural-interface/public/shared/skills/ss-review-view.js +190 -0
  391. package/neural-interface/public/shared/skills/ss-tabs.js +79 -0
  392. package/neural-interface/public/shared/skills/ss-unicode.js +135 -0
  393. package/neural-interface/public/shared/skills/studio/sx-actions.js +222 -0
  394. package/neural-interface/public/shared/skills/studio/sx-cm.js +101 -0
  395. package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +749 -0
  396. package/neural-interface/public/shared/skills/studio/sx-create-ai.js +236 -0
  397. package/neural-interface/public/shared/skills/studio/sx-create-view.js +254 -0
  398. package/neural-interface/public/shared/skills/studio/sx-create.js +126 -0
  399. package/neural-interface/public/shared/skills/studio/sx-diff-view.js +43 -0
  400. package/neural-interface/public/shared/skills/studio/sx-diff.js +133 -0
  401. package/neural-interface/public/shared/skills/studio/sx-docs.js +480 -0
  402. package/neural-interface/public/shared/skills/studio/sx-dom.js +229 -0
  403. package/neural-interface/public/shared/skills/studio/sx-edit-view.js +848 -0
  404. package/neural-interface/public/shared/skills/studio/sx-editor-model.js +193 -0
  405. package/neural-interface/public/shared/skills/studio/sx-errors.js +22 -0
  406. package/neural-interface/public/shared/skills/studio/sx-geometry.js +82 -0
  407. package/neural-interface/public/shared/skills/studio/sx-import.js +262 -0
  408. package/neural-interface/public/shared/skills/studio/sx-inspector.js +308 -0
  409. package/neural-interface/public/shared/skills/studio/sx-install-flow.js +279 -0
  410. package/neural-interface/public/shared/skills/studio/sx-install.js +296 -0
  411. package/neural-interface/public/shared/skills/studio/sx-library-view.js +639 -0
  412. package/neural-interface/public/shared/skills/studio/sx-library.js +475 -0
  413. package/neural-interface/public/shared/skills/studio/sx-main.js +681 -0
  414. package/neural-interface/public/shared/skills/studio/sx-operations-view.js +98 -0
  415. package/neural-interface/public/shared/skills/studio/sx-operations.js +11 -0
  416. package/neural-interface/public/shared/skills/studio/sx-plan.js +158 -0
  417. package/neural-interface/public/shared/skills/studio/sx-publish-view.js +621 -0
  418. package/neural-interface/public/shared/skills/studio/sx-review-view.js +369 -0
  419. package/neural-interface/public/shared/skills/studio/sx-review.js +148 -0
  420. package/neural-interface/public/shared/skills/studio/sx-scan.js +35 -0
  421. package/neural-interface/public/shared/skills/studio/sx-snippets.js +96 -0
  422. package/neural-interface/public/shared/skills/studio/sx-subject.js +248 -0
  423. package/neural-interface/public/shared/skills/studio/sx-test-view.js +994 -0
  424. package/neural-interface/public/shared/skills/studio/sx-test.js +328 -0
  425. package/neural-interface/public/shared/skills/studio/sx-versions-view.js +241 -0
  426. package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +425 -0
  427. package/neural-interface/public/shared/styleguide/sg-panel.js +4 -2
  428. package/neural-interface/public/shared/styles.css +2065 -2150
  429. package/neural-interface/public/shared/synabun-mascot.js +1115 -9
  430. package/neural-interface/public/shared/tool-list-picker.js +55 -0
  431. package/neural-interface/public/shared/tool-list-storage.js +24 -0
  432. package/neural-interface/public/shared/tool-list-view.js +112 -0
  433. package/neural-interface/public/shared/tour/tour-actor.js +268 -0
  434. package/neural-interface/public/shared/tour/tour-beats.js +336 -0
  435. package/neural-interface/public/shared/tour/tour-engine.js +884 -0
  436. package/neural-interface/public/shared/tour/tour-ink.js +390 -0
  437. package/neural-interface/public/shared/tour/tour-stage.js +440 -0
  438. package/neural-interface/public/shared/tour/tour-state.js +40 -0
  439. package/neural-interface/public/shared/tour/tour-tips.js +99 -0
  440. package/neural-interface/public/shared/tour/tour.css +144 -0
  441. package/neural-interface/public/shared/ui-assistant.js +27 -5
  442. package/neural-interface/public/shared/ui-automation-studio.js +155 -152
  443. package/neural-interface/public/shared/ui-bookmarks.js +2 -1
  444. package/neural-interface/public/shared/ui-claude-panel.js +153 -13
  445. package/neural-interface/public/shared/ui-codex-panel.js +1 -0
  446. package/neural-interface/public/shared/ui-command-runner.js +6 -3
  447. package/neural-interface/public/shared/ui-context-menu.js +295 -0
  448. package/neural-interface/public/shared/ui-cost-widget.js +57 -59
  449. package/neural-interface/public/shared/ui-crash-notice.js +187 -0
  450. package/neural-interface/public/shared/ui-detail.js +21 -9
  451. package/neural-interface/public/shared/ui-file-links.js +1 -0
  452. package/neural-interface/public/shared/ui-image-gallery.js +56 -52
  453. package/neural-interface/public/shared/ui-invite.js +18 -2
  454. package/neural-interface/public/shared/ui-keybinds.js +26 -1
  455. package/neural-interface/public/shared/ui-link.js +9 -9
  456. package/neural-interface/public/shared/ui-menubar.js +229 -40
  457. package/neural-interface/public/shared/ui-native-loop-router-state.js +5 -0
  458. package/neural-interface/public/shared/ui-native-loop-router.js +9 -1
  459. package/neural-interface/public/shared/ui-navbar.js +4 -24
  460. package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
  461. package/neural-interface/public/shared/ui-panels.js +96 -65
  462. package/neural-interface/public/shared/ui-schedules-studio.js +2267 -953
  463. package/neural-interface/public/shared/ui-sessions.js +20 -7
  464. package/neural-interface/public/shared/ui-settings.js +679 -496
  465. package/neural-interface/public/shared/ui-sidebar.js +4 -4
  466. package/neural-interface/public/shared/ui-sidepanel-session-entry.js +13 -0
  467. package/neural-interface/public/shared/ui-sidepanel-sessions.js +56 -5
  468. package/neural-interface/public/shared/ui-sidepanel-state.js +23 -12
  469. package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
  470. package/neural-interface/public/shared/ui-sidepanel-windows.js +16 -11
  471. package/neural-interface/public/shared/ui-skills.js +42 -2781
  472. package/neural-interface/public/shared/ui-styleguide.js +5 -2
  473. package/neural-interface/public/shared/ui-sync.js +22 -5
  474. package/neural-interface/public/shared/ui-terminal.js +159 -199
  475. package/neural-interface/public/shared/ui-tool-updates.js +3 -1
  476. package/neural-interface/public/shared/ui-tooltip.js +10 -5
  477. package/neural-interface/public/shared/ui-trash.js +14 -5
  478. package/neural-interface/public/shared/ui-tutorial-layout.js +3 -117
  479. package/neural-interface/public/shared/ui-tutorial-preview.js +103 -0
  480. package/neural-interface/public/shared/ui-tutorial-steps.js +3 -61
  481. package/neural-interface/public/shared/ui-tutorial.css +47 -100
  482. package/neural-interface/public/shared/ui-tutorial.js +285 -499
  483. package/neural-interface/public/shared/ui-update.js +121 -16
  484. package/neural-interface/public/shared/ui-whiteboard.js +313 -59
  485. package/neural-interface/public/shared/ui-worker-end.js +4 -0
  486. package/neural-interface/public/shared/ui-workspaces.js +3 -2
  487. package/neural-interface/public/shared/view-variant.js +66 -0
  488. package/neural-interface/public/shared/whatsapp/wa-view.js +1 -1
  489. package/neural-interface/public/shared/whiteboard-list.js +172 -0
  490. package/neural-interface/public/shared/worker-end.js +10 -3
  491. package/neural-interface/public/shared/worker-restart.js +12 -0
  492. package/neural-interface/public/sidepanel-session.html +1 -1
  493. package/neural-interface/public/variant/2d/background.js +2 -1
  494. package/neural-interface/public/variant/2d/context-menu.js +8 -2
  495. package/neural-interface/public/variant/2d/graph.js +42 -20
  496. package/neural-interface/public/variant/2d/hulls.js +14 -9
  497. package/neural-interface/public/variant/2d/lasso.js +11 -7
  498. package/neural-interface/public/variant/2d/main.js +36 -2
  499. package/neural-interface/public/variant/2d/minimap.js +11 -13
  500. package/neural-interface/public/variant/3d/main.js +72 -6
  501. package/neural-interface/public/variant/3d/map-controls.js +24 -9
  502. package/neural-interface/public/vendor/caveat/OFL.txt +93 -0
  503. package/neural-interface/public/vendor/caveat/caveat-latin-400-normal.woff2 +0 -0
  504. package/neural-interface/public/vendor/caveat/caveat-latin-700-normal.woff2 +0 -0
  505. package/neural-interface/public/vendor/caveat/caveat.css +17 -0
  506. package/neural-interface/public/vendor/caveat/manifest.json +12 -0
  507. package/neural-interface/public/vendor/highlight/LICENSE +29 -0
  508. package/neural-interface/public/vendor/highlight/github-dark-dimmed-11.12.0.min.css +9 -0
  509. package/neural-interface/public/vendor/highlight/highlight-11.12.0.min.js +1262 -0
  510. package/neural-interface/public/vendor/highlight/manifest.json +5 -0
  511. package/neural-interface/public/vendor/html2canvas/LICENSE +22 -0
  512. package/neural-interface/public/vendor/html2canvas/html2canvas-1.4.1.min.js +20 -0
  513. package/neural-interface/public/vendor/html2canvas/manifest.json +4 -0
  514. package/neural-interface/public/vendor/marked/LICENSE.md +44 -0
  515. package/neural-interface/public/vendor/marked/manifest.json +4 -0
  516. package/neural-interface/public/vendor/marked/marked-14.1.4.esm.js +2502 -0
  517. package/neural-interface/public/vendor/mermaid/LICENSE +21 -0
  518. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-PAR5IXJI.mjs +1 -0
  519. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-M7G3SWCO.mjs +1 -0
  520. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-2PNWDENW.mjs +36 -0
  521. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-PUWGUBOA.mjs +129 -0
  522. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-3NLNHZP5.mjs +38 -0
  523. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-2NMSUPJH.mjs +1 -0
  524. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-32MCUW2P.mjs +206 -0
  525. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3NPNU5GP.mjs +1 -0
  526. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SMGFRGC.mjs +1 -0
  527. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4CAJECRU.mjs +14 -0
  528. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4OADUZ5Q.mjs +10 -0
  529. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs +1 -0
  530. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IQCK5RY.mjs +3 -0
  531. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5MVFYWFU.mjs +1 -0
  532. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs +1 -0
  533. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs +15 -0
  534. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-CLS4B6BI.mjs +168 -0
  535. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-DZP67EKU.mjs +70 -0
  536. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-EICP7K5X.mjs +1 -0
  537. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDY2UAB4.mjs +1 -0
  538. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7VHZCWX.mjs +1 -0
  539. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-IJBDOHL6.mjs +1 -0
  540. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JFFVMJIA.mjs +1 -0
  541. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs +1 -0
  542. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JZGDI5JK.mjs +1 -0
  543. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-KD6SPIPN.mjs +2 -0
  544. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NF366YI6.mjs +231 -0
  545. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NUDPKBEF.mjs +32 -0
  546. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-OJINMHTS.mjs +1 -0
  547. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Q6NGPIAH.mjs +2 -0
  548. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-QJSWEUOL.mjs +132 -0
  549. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-R7JDMUKV.mjs +1 -0
  550. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RCXAM2GK.mjs +1 -0
  551. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RT4MAWR3.mjs +1 -0
  552. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SFMINX4W.mjs +1 -0
  553. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SLDQ463B.mjs +88 -0
  554. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-STOV2HOB.mjs +1 -0
  555. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs +1 -0
  556. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-TCEHX7R3.mjs +1 -0
  557. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VQC2EELJ.mjs +1 -0
  558. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VRZKL3EH.mjs +1 -0
  559. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTHDQ7BV.mjs +1 -0
  560. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VY2OSTJR.mjs +2 -0
  561. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-WUBWJARI.mjs +1 -0
  562. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YBMQ5JGJ.mjs +2 -0
  563. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YDMLL4PJ.mjs +1 -0
  564. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Z6V44ARX.mjs +62 -0
  565. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZJJ7VQJP.mjs +339 -0
  566. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZNLK7HRR.mjs +1 -0
  567. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZQN7UHIL.mjs +1 -0
  568. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZS6VBONO.mjs +174 -0
  569. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZUNWM646.mjs +1 -0
  570. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-FGAMPOII.mjs +1 -0
  571. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-AI5RJEK4.mjs +1 -0
  572. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-Q72C2OJ3.mjs +1 -0
  573. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-6OCTWOGG.mjs +1 -0
  574. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-2OOWUY4M.mjs +62 -0
  575. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/dagre-MPVFI544.mjs +4 -0
  576. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-AE4NWXFW.mjs +24 -0
  577. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-BUJID5UG.mjs +41 -0
  578. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-C44CZ5NI.mjs +24 -0
  579. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-EYOLEXXS.mjs +30 -0
  580. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-P7B6PWOJ.mjs +3 -0
  581. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-FTPZ3PV6.mjs +1 -0
  582. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-H3ERR26V.mjs +99 -0
  583. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-WKSWQHFS.mjs +1 -0
  584. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-YHGXBVSY.mjs +1 -0
  585. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-RWFTB7ED.mjs +292 -0
  586. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-JH2HKYUO.mjs +1 -0
  587. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-MAR6GKOP.mjs +106 -0
  588. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-3TX3OFWW.mjs +1 -0
  589. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-LV547AFH.mjs +2 -0
  590. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-PUJQGNDS.mjs +70 -0
  591. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-EW5QJT4W.mjs +139 -0
  592. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-JSQERAZB.mjs +89 -0
  593. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/katex-CZ4GXH2S.mjs +257 -0
  594. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-VBJCLQLM.mjs +96 -0
  595. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-MKII6P3Y.mjs +1 -0
  596. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-7WILOQTJ.mjs +1 -0
  597. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-6B4OPMJ5.mjs +1 -0
  598. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-EFA7CBSB.mjs +39 -0
  599. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-WARVYA7P.mjs +7 -0
  600. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-UPTR3XUL.mjs +1 -0
  601. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-MEFUPFMS.mjs +1 -0
  602. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-R5YG2S5D.mjs +1 -0
  603. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-G5QEX2L6.mjs +1 -0
  604. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-H5I2ZRY2.mjs +1 -0
  605. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-5NIQVNLQ.mjs +1 -0
  606. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SXREGOKZ.mjs +84 -0
  607. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-VV74M2VP.mjs +40 -0
  608. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-52ZFIFDL.mjs +162 -0
  609. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-FGA5AGYP.mjs +1 -0
  610. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-3QAKPIVI.mjs +1 -0
  611. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-HN2P4RDZ.mjs +1 -0
  612. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-QLVP42QD.mjs +1 -0
  613. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-JKPDBFCN.mjs +8 -0
  614. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-GS45XAXW.mjs +120 -0
  615. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-ZRJGANNQ.mjs +1 -0
  616. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-K64VN5AS.mjs +1 -0
  617. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-QIQU2ZRJ.mjs +34 -0
  618. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-D67OWCCH.mjs +1 -0
  619. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-U6YNM66N.mjs +78 -0
  620. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-XJAZEDNM.mjs +7 -0
  621. package/neural-interface/public/vendor/mermaid/manifest.json +4 -0
  622. package/neural-interface/public/vendor/mermaid/mermaid-11.17.2.esm.min.mjs +14 -0
  623. package/neural-interface/public/vendor/yaml/LICENSE +13 -0
  624. package/neural-interface/public/vendor/yaml/manifest.json +4 -0
  625. package/neural-interface/public/vendor/yaml/yaml-2.9.1.min.js +137 -0
  626. package/neural-interface/scripts/build-vendor.mjs +116 -3
  627. package/neural-interface/server.js +4834 -2541
  628. package/neural-interface/templates/rulesets/core.md +1 -1
  629. package/neural-interface/templates/rulesets/legacy-hashes.json +18 -0
  630. package/neural-interface/templates/rulesets/manifest.json +8 -8
  631. package/npm-shrinkwrap.json +18 -12
  632. package/package.json +16 -3
  633. package/postinstall.js +9 -4
  634. package/preuninstall.js +1 -1
  635. package/setup.js +97 -322
  636. package/skills/skill-forge/SKILL.md +177 -0
  637. package/skills/skill-forge/evals/evals.json +54 -0
  638. package/skills/skill-forge/references/package.md +105 -0
  639. package/skills/skill-forge/references/review-and-recovery.md +63 -0
  640. package/skills/skill-forge/references/runtime-profiles.md +20 -0
  641. package/skills/skill-forge/references/sources-and-capabilities.md +51 -0
  642. package/skills/synabun/SKILL.md +10 -7
  643. package/skills/synabun/modules/audit.md +1 -5
  644. package/skills/synabun/modules/changelog.md +1 -5
  645. package/skills/synabun/modules/idea.md +1 -1
  646. package/skills/synabun/modules/memorize.md +6 -9
  647. package/skills/synabun/modules/schedule.md +5 -5
  648. package/mcp-server/dist/services/profiles.d.ts +0 -120
  649. package/mcp-server/dist/services/profiles.d.ts.map +0 -1
  650. package/mcp-server/dist/services/profiles.js +0 -387
  651. package/mcp-server/dist/services/profiles.js.map +0 -1
  652. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +0 -97
  653. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +0 -1
  654. package/mcp-server/dist/tools/leonardo-browser-tools.js +0 -228
  655. package/mcp-server/dist/tools/leonardo-browser-tools.js.map +0 -1
  656. package/mcp-server/dist/tools/leonardo.d.ts +0 -13
  657. package/mcp-server/dist/tools/leonardo.d.ts.map +0 -1
  658. package/mcp-server/dist/tools/leonardo.js +0 -21
  659. package/mcp-server/dist/tools/leonardo.js.map +0 -1
  660. package/mcp-server/dist/tools/profile.d.ts +0 -17
  661. package/mcp-server/dist/tools/profile.d.ts.map +0 -1
  662. package/mcp-server/dist/tools/profile.js +0 -114
  663. package/mcp-server/dist/tools/profile.js.map +0 -1
  664. package/mcp-server/src/services/profiles.ts +0 -428
  665. package/mcp-server/src/tools/leonardo-browser-tools.ts +0 -291
  666. package/mcp-server/src/tools/leonardo.ts +0 -30
  667. package/mcp-server/src/tools/profile.ts +0 -122
  668. package/neural-interface/lib/assistant-brains/opencode-browser-policy.js +0 -47
  669. package/neural-interface/lib/assistant-brains/opencode-route-gate.js +0 -62
  670. package/neural-interface/lib/mcp-profile-servers.js +0 -120
  671. package/neural-interface/public/shared/ui-tutorial-draw.js +0 -311
  672. package/skills/leonardo/SKILL.md +0 -168
  673. package/skills/leonardo/icon.svg +0 -1
  674. package/skills/leonardo/modules/browser-guide.md +0 -378
  675. package/skills/leonardo/modules/image-prompter.md +0 -283
  676. package/skills/leonardo/modules/model-advisor.md +0 -100
  677. package/skills/leonardo/modules/prompt-library.md +0 -110
  678. package/skills/leonardo/modules/style-guide.md +0 -186
  679. package/skills/leonardo/modules/video-prompter.md +0 -317
@@ -37,15 +37,15 @@ These exist because group-level launch overrides historically clobbered per-sche
37
37
  All bodies + responses are JSON. Capture the returned `id` from each POST.
38
38
 
39
39
  **Accepted fields (never invent others):**
40
- - **Template** — required `name`, `task`. Optional: `description, context, iterations(=10), maxMinutes(=30), usesBrowser, icon(=🔄), category(=custom), profile, model, effort, mcpProfile, folderId, codexAccountId`. Server generates `id`.
41
- - **Schedule** — required `name`, `templateId`, `cron` (exactly 5 whitespace fields). Optional top-level launch overrides: `profile, model, effort, mcpProfile, usesBrowser, codexAccountId`; plus `groupId, timezone, enabled, dayThemes, overrides`. Only `{iterations, maxMinutes}` go inside `overrides{}`.
40
+ - **Template** — required `name`, `task`. Optional: `description, context, iterations(=10), maxMinutes(=30), usesBrowser, icon(=🔄), category(=custom), profile, model, effort, tools, folderId, codexAccountId`. Server generates `id`.
41
+ - **Schedule** — required `name`, `templateId`, `cron` (exactly 5 whitespace fields). Optional top-level launch overrides: `profile, model, effort, tools, usesBrowser, codexAccountId`; plus `groupId, timezone, enabled, dayThemes, overrides`. Only `{iterations, maxMinutes}` go inside `overrides{}`.
42
42
  - **Group** — required `name`. Optional `color`. Returns `id` = `sg_…`.
43
43
 
44
44
  **Vocabularies:**
45
45
  - CLI profiles: `claude-code`, `codex`, `gemini`, `opencode`.
46
46
  - Default model per profile: `claude-code → claude-sonnet-4-6` · `codex → gpt-5.4-mini` · `gemini → gemini-2.5-pro` · `opencode → null` (last-used).
47
47
  - Categories (only these): `social`, `productivity`, `monitoring`, `custom`.
48
- - Icon keys: `twitter, x, instagram, facebook, linkedin, tiktok, youtube, whatsapp, discord, search, research, chart, mail, globe, monitor, code, pencil, chat, refresh, brain, clock, claude, openai, gemini, leonardo, pin, sparkle`.
48
+ - Icon keys: `twitter, x, instagram, facebook, linkedin, tiktok, youtube, whatsapp, discord, search, research, chart, mail, globe, monitor, code, pencil, chat, refresh, brain, clock, claude, openai, gemini, pin, sparkle`.
49
49
 
50
50
  ---
51
51
 
@@ -125,7 +125,7 @@ Capture `id` → `$GROUP_ID`.
125
125
  ```bash
126
126
  curl -s -X POST http://localhost:3344/api/loop/templates \
127
127
  -H 'Content-Type: application/json' \
128
- -d '{"name":"<name>","description":"<one-line>","task":"<full task block>","iterations":<n|10>,"maxMinutes":<n|30>,"usesBrowser":<true|false>,"icon":"<icon>","category":"<social|productivity|monitoring|custom>","profile":"<profile>","model":"<model>","effort":<"off"|null>,"mcpProfile":<"full"|null>}'
128
+ -d '{"name":"<name>","description":"<one-line>","task":"<full task block>","iterations":<n|10>,"maxMinutes":<n|30>,"usesBrowser":<true|false>,"icon":"<icon>","category":"<social|productivity|monitoring|custom>","profile":"<profile>","model":"<model>","effort":<"off"|null>,"tools":["all","mcp:*"]}'
129
129
  ```
130
130
  Capture `id` → `$TEMPLATE_ID`. (No `codexAccountId` unless the user named one.)
131
131
 
@@ -143,7 +143,7 @@ Rules baked in: `model`/`profile` **top level**; `{iterations,maxMinutes}` in `o
143
143
 
144
144
  ## Phase 6 — Done (one line)
145
145
 
146
- > ✓ Schedule **`<name>`** created (`<model>`, `<cron-human>`). The Schedules Studio refreshed — open **Automations → Schedules** to view or change any field; the model is editable per-schedule there.
146
+ > ✓ Schedule **`<name>`** created (`<model>`, `<cron-human>`). The Schedules window refreshed — open **Schedules** in the menubar to view or change any field; the model is editable per-schedule there.
147
147
 
148
148
  ---
149
149
 
@@ -1,120 +0,0 @@
1
- /**
2
- * Profile state and logic — shared between index.ts (registration) and tools/profile.ts.
3
- * Extracted to its own module to avoid circular imports.
4
- */
5
- import type { RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import { type CallerRole } from './identity.js';
7
- export declare const PROFILE_PRESETS: Record<string, string[]>;
8
- export declare const VALID_GROUPS: Set<string>;
9
- /**
10
- * Groups that only a caller with the matching role may see. They are never
11
- * part of a preset: the role — not the profile — decides, so `profile set`
12
- * can neither reveal `agents` to a plain runtime nor hide it from the
13
- * assistant, and a deferred Codex catalog does not leak it either.
14
- */
15
- export declare const ROLE_GATED_GROUPS: Readonly<Record<string, CallerRole>>;
16
- export declare function isRoleGatedGroup(group: string): boolean;
17
- /**
18
- * Groups unlocked by a capability the caller proves, not by a role or a
19
- * profile: `computer` needs a desktop grant the Neural Interface minted for
20
- * this brain or worker run (and macOS). Like role-gated groups they are never
21
- * part of a preset and a deferred catalog never leaks them.
22
- */
23
- export type CallerCapability = 'computer';
24
- export declare const CAPABILITY_GATED_GROUPS: Readonly<Record<string, CallerCapability>>;
25
- export declare function isCapabilityGatedGroup(group: string): boolean;
26
- export declare function isGatedGroup(group: string): boolean;
27
- export declare const PROFILE_PATH: string;
28
- export declare const TOOL_CATALOG_MODE_ENV = "SYNABUN_TOOL_CATALOG_MODE";
29
- export type ToolCatalogMode = 'profiled' | 'deferred';
30
- /**
31
- * Codex snapshots its deferred MCP catalog at the start of each model turn.
32
- * A tools/list_changed notification updates Codex's MCP inventory, but tools
33
- * added after the turn starts cannot enter that turn's deferred catalog. For
34
- * Codex runtimes we therefore advertise every SynaBun tool up front and use
35
- * profiles as a focus selection instead of an availability boundary.
36
- */
37
- export declare function readToolCatalogMode(): ToolCatalogMode;
38
- /**
39
- * Return the profile definitions visible to the current runtime.
40
- *
41
- * Neural Interface lets users add or edit profile presets in
42
- * data/mcp-registry.json. Reading that registry here keeps the always-on
43
- * `profile` tool and startup profile resolution aligned with the sidepanel
44
- * selector instead of silently treating a custom preset name as an empty
45
- * profile. Built-ins remain the fallback for headless/standalone MCP use.
46
- */
47
- export declare function getProfilePresets(): Record<string, string[]>;
48
- export declare function isClaudeCode(): boolean;
49
- export declare function resolveProfileGroups(profileName: string): Set<string>;
50
- export declare function isValidProfileSelection(profileName: string): boolean;
51
- export declare function readInitialProfile(): string;
52
- export declare function logCodexConfigNoticeOnce(): void;
53
- export interface ProfileApplyResult {
54
- profile: string;
55
- enabled: string[];
56
- disabled: string[];
57
- totalTools: number;
58
- changed: boolean;
59
- catalogMode: ToolCatalogMode;
60
- }
61
- /**
62
- * Profile state belongs to one MCP server/transport, never to this module.
63
- *
64
- * The HTTP transport keeps several stateful McpServer instances in one Node
65
- * process. Module-global active groups/tool refs made one client's profile.set
66
- * mutate whichever server happened to register last. Stdio still gets one
67
- * ProfileRuntime per process, while HTTP gets one per client session.
68
- */
69
- export declare class ProfileRuntime {
70
- private activeGroups;
71
- private activeProfileName;
72
- private readonly catalogMode;
73
- private role;
74
- private capabilities;
75
- private readonly platform;
76
- private readonly toolGroups;
77
- private onProfileChanged;
78
- private notificationTimer;
79
- constructor(initialProfile: string, options?: {
80
- catalogMode?: ToolCatalogMode;
81
- role?: CallerRole | null;
82
- capabilities?: CallerCapability[] | null;
83
- platform?: string;
84
- });
85
- getCapabilities(): CallerCapability[];
86
- /** Plain setter — callers re-apply the current profile afterwards. */
87
- setCapabilities(capabilities: CallerCapability[]): void;
88
- getActiveProfile(): {
89
- profile: string;
90
- activeGroups: string[];
91
- };
92
- getActiveProfileName(): string;
93
- getActiveGroups(): Set<string>;
94
- getCatalogMode(): ToolCatalogMode;
95
- getRole(): CallerRole | null;
96
- /** Plain setter — callers re-apply the current profile afterwards so
97
- * role-gated groups flip (index.ts setServerRole does both). */
98
- setRole(role: CallerRole | null): void;
99
- /** Profile groups with the role gate applied: a gated group is active iff
100
- * this runtime's role matches, whatever the profile or registry says. */
101
- private resolveGroupsForRole;
102
- setToolGroup(name: string, tools: RegisteredTool[]): void;
103
- setOnProfileChanged(fn: (() => void | Promise<void>) | null): void;
104
- dispose(): void;
105
- /**
106
- * Coalesce one delayed list-changed notification. Delaying is essential:
107
- * OpenCode used to receive the notification while profile.set itself was
108
- * still in flight and could abort/cache the old tool roundtrip.
109
- */
110
- scheduleProfileChangedNotification(delayMs?: number): boolean;
111
- applyProfile(profileName: string): ProfileApplyResult;
112
- }
113
- export declare function persistProfile(profileName: string): void;
114
- /**
115
- * Persist only the current host-created runtime selection, when one exists.
116
- * This path is unique to an OpenCode sidepanel/loop/schedule and is removed
117
- * with that runtime. It must never fall back to PROFILE_PATH.
118
- */
119
- export declare function persistRuntimeProfile(profileName: string): boolean;
120
- //# sourceMappingURL=profiles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/services/profiles.ts"],"names":[],"mappings":"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"}
@@ -1,387 +0,0 @@
1
- import { config } from '../config.js';
2
- import { sanitizeDesktopGrant, sanitizeRole } from './identity.js';
3
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
4
- import { dirname, join } from 'path';
5
- // ── Presets and constants ──
6
- const ALL_BROWSER_GROUPS = ['browser', 'browser_twitter', 'browser_facebook', 'browser_tiktok', 'browser_whatsapp', 'browser_instagram', 'browser_linkedin', 'browser_bluesky'];
7
- export const PROFILE_PRESETS = {
8
- core: ['git', 'image', 'styleguide'],
9
- standard: ['git', 'image', 'whiteboard', 'card', 'tictactoe', 'styleguide'],
10
- 'codex-browser': ['git', 'image', 'browser', 'browser_twitter', 'styleguide'],
11
- twitter: ['git', 'image', 'browser', 'browser_twitter'],
12
- facebook: ['git', 'image', 'browser', 'browser_facebook'],
13
- tiktok: ['git', 'image', 'browser', 'browser_tiktok'],
14
- whatsapp: ['git', 'image', 'browser', 'browser_whatsapp'],
15
- instagram: ['git', 'image', 'browser', 'browser_instagram'],
16
- linkedin: ['git', 'image', 'browser', 'browser_linkedin'],
17
- bluesky: ['git', 'image', 'browser', 'browser_bluesky'],
18
- browser: ['git', 'image', 'whiteboard', 'card', 'tictactoe', ...ALL_BROWSER_GROUPS, 'leonardo', 'gsc', 'youtube', 'styleguide', 'morelogin'],
19
- full: ['git', 'image', 'whiteboard', 'card', 'tictactoe', ...ALL_BROWSER_GROUPS, 'leonardo', 'discord', 'gsc', 'youtube', 'styleguide', 'morelogin'],
20
- leonardoai: ['leonardo'],
21
- gsc: ['git', 'image', 'browser', 'gsc'],
22
- youtube: ['git', 'image', 'browser', 'youtube'],
23
- };
24
- export const VALID_GROUPS = new Set([
25
- ...ALL_BROWSER_GROUPS,
26
- 'whiteboard', 'card', 'tictactoe', 'discord', 'git', 'leonardo', 'image', 'gsc', 'youtube', 'styleguide', 'morelogin',
27
- 'agents', 'computer',
28
- ]);
29
- /**
30
- * Groups that only a caller with the matching role may see. They are never
31
- * part of a preset: the role — not the profile — decides, so `profile set`
32
- * can neither reveal `agents` to a plain runtime nor hide it from the
33
- * assistant, and a deferred Codex catalog does not leak it either.
34
- */
35
- export const ROLE_GATED_GROUPS = Object.freeze({ agents: 'assistant' });
36
- export function isRoleGatedGroup(group) {
37
- return Object.prototype.hasOwnProperty.call(ROLE_GATED_GROUPS, group);
38
- }
39
- export const CAPABILITY_GATED_GROUPS = Object.freeze({ computer: 'computer' });
40
- export function isCapabilityGatedGroup(group) {
41
- return Object.prototype.hasOwnProperty.call(CAPABILITY_GATED_GROUPS, group);
42
- }
43
- export function isGatedGroup(group) {
44
- return isRoleGatedGroup(group) || isCapabilityGatedGroup(group);
45
- }
46
- export const PROFILE_PATH = join(config.dataDir, 'active-profile.json');
47
- const PROFILE_REGISTRY_PATH = join(config.dataHome, 'data', 'mcp-registry.json');
48
- const RUNTIME_PROFILE_PATH_ENV = 'SYNABUN_RUNTIME_PROFILE_PATH';
49
- export const TOOL_CATALOG_MODE_ENV = 'SYNABUN_TOOL_CATALOG_MODE';
50
- /**
51
- * Codex snapshots its deferred MCP catalog at the start of each model turn.
52
- * A tools/list_changed notification updates Codex's MCP inventory, but tools
53
- * added after the turn starts cannot enter that turn's deferred catalog. For
54
- * Codex runtimes we therefore advertise every SynaBun tool up front and use
55
- * profiles as a focus selection instead of an availability boundary.
56
- */
57
- export function readToolCatalogMode() {
58
- const configured = String(process.env[TOOL_CATALOG_MODE_ENV] || '').trim().toLowerCase();
59
- if (configured === 'deferred')
60
- return 'deferred';
61
- if (configured === 'profiled')
62
- return 'profiled';
63
- // Managed Codex sidepanels have always used this stable runtime prefix. The
64
- // fallback makes upgraded sidepanels reliable even before their next spawn
65
- // picks up the explicit catalog-mode environment override.
66
- if (/^codex-sp-/.test(String(process.env.SYNABUN_TERMINAL_SESSION || '')))
67
- return 'deferred';
68
- return 'profiled';
69
- }
70
- /**
71
- * Return the profile definitions visible to the current runtime.
72
- *
73
- * Neural Interface lets users add or edit profile presets in
74
- * data/mcp-registry.json. Reading that registry here keeps the always-on
75
- * `profile` tool and startup profile resolution aligned with the sidepanel
76
- * selector instead of silently treating a custom preset name as an empty
77
- * profile. Built-ins remain the fallback for headless/standalone MCP use.
78
- */
79
- export function getProfilePresets() {
80
- const presets = Object.fromEntries(Object.entries(PROFILE_PRESETS).map(([name, groups]) => [name, [...groups]]));
81
- try {
82
- if (!existsSync(PROFILE_REGISTRY_PATH))
83
- return presets;
84
- const registry = JSON.parse(readFileSync(PROFILE_REGISTRY_PATH, 'utf-8'));
85
- for (const [name, profile] of Object.entries(registry?.profiles || {})) {
86
- const registryGroups = Array.isArray(profile?.groups)
87
- ? profile.groups
88
- .filter((group) => typeof group === 'string' && VALID_GROUPS.has(group))
89
- : [];
90
- const normalizedName = String(name).toLowerCase().trim();
91
- // Built-ins are forward-migrated additively. Older persisted registries
92
- // predate groups such as styleguide/morelogin; letting them replace the
93
- // current defaults would silently remove tools from new MCP processes.
94
- presets[normalizedName] = PROFILE_PRESETS[normalizedName]
95
- ? [...new Set([...PROFILE_PRESETS[normalizedName], ...registryGroups])]
96
- : registryGroups;
97
- }
98
- }
99
- catch (err) {
100
- console.error('[SynaBun] Failed to read MCP profile registry:', err);
101
- }
102
- return presets;
103
- }
104
- // ── Claude Code detection ──
105
- // Claude Code sets CLAUDECODE=1 in the environment. It has ToolSearch for
106
- // deferred tool loading, so it never needs profile restrictions — always full.
107
- export function isClaudeCode() {
108
- return process.env.CLAUDECODE === '1';
109
- }
110
- // ── Helpers ──
111
- export function resolveProfileGroups(profileName) {
112
- const raw = profileName.toLowerCase().trim();
113
- const presets = getProfilePresets();
114
- if (Object.prototype.hasOwnProperty.call(presets, raw))
115
- return new Set(presets[raw]);
116
- const groups = new Set();
117
- for (const g of raw.split(',')) {
118
- const name = g.trim();
119
- if (VALID_GROUPS.has(name))
120
- groups.add(name);
121
- }
122
- return groups;
123
- }
124
- export function isValidProfileSelection(profileName) {
125
- const raw = String(profileName || '').toLowerCase().trim();
126
- if (!raw)
127
- return false;
128
- if (Object.prototype.hasOwnProperty.call(getProfilePresets(), raw))
129
- return true;
130
- const groups = raw.split(',').map((group) => group.trim()).filter(Boolean);
131
- return groups.length > 0 && groups.every((group) => VALID_GROUPS.has(group));
132
- }
133
- let _loggedCodexConfigNotice = false;
134
- export function readInitialProfile() {
135
- // 1. SYNABUN_RUNTIME_PROFILE_PATH — an isolated, runtime-owned selection.
136
- // OpenCode gives every sidepanel/loop/schedule a unique path so an MCP
137
- // child restart keeps that runtime's latest agent-selected profile even
138
- // though the process-wide/default profile is never changed.
139
- // 2. SYNABUN_PROFILE env var (set by Codex/OpenCode MCP env block, or by
140
- // .env via preload.ts) — the runtime's launch-time profile.
141
- // 3. active-profile.json — persisted future-runtime default, owned by SynaBun.
142
- // 4. default 'full'.
143
- const runtimeProfile = readProfileFile(process.env[RUNTIME_PROFILE_PATH_ENV]);
144
- if (runtimeProfile)
145
- return runtimeProfile;
146
- // Claude Code has ToolSearch and normally runs full. Check this only after
147
- // an explicit runtime-owned file so an inherited CLAUDECODE=1 from the
148
- // parent shell cannot erase a managed OpenCode runtime pin.
149
- if (isClaudeCode())
150
- return 'full';
151
- if (process.env.SYNABUN_PROFILE) {
152
- if (isValidProfileSelection(process.env.SYNABUN_PROFILE)) {
153
- return process.env.SYNABUN_PROFILE.toLowerCase().trim();
154
- }
155
- // An explicit but invalid runtime pin must fail closed locally. Falling
156
- // through to the shared future-runtime default would make a typo in one
157
- // isolated window silently depend on another window's selection.
158
- console.error(`[SynaBun] Ignoring invalid SYNABUN_PROFILE=${JSON.stringify(process.env.SYNABUN_PROFILE)}; using full.`);
159
- return 'full';
160
- }
161
- const defaultProfile = readProfileFile(PROFILE_PATH);
162
- if (defaultProfile)
163
- return defaultProfile;
164
- return 'full';
165
- }
166
- function readProfileFile(profilePath) {
167
- if (!profilePath)
168
- return null;
169
- try {
170
- if (!existsSync(profilePath))
171
- return null;
172
- const data = JSON.parse(readFileSync(profilePath, 'utf-8'));
173
- if (typeof data?.profile === 'string' && isValidProfileSelection(data.profile)) {
174
- return data.profile.toLowerCase().trim();
175
- }
176
- }
177
- catch { }
178
- return null;
179
- }
180
- export function logCodexConfigNoticeOnce() {
181
- if (_loggedCodexConfigNotice)
182
- return;
183
- _loggedCodexConfigNotice = true;
184
- console.error('[SynaBun] Runtime profile switches never rewrite ~/.codex/config.toml. ' +
185
- 'The canonical Codex registration uses the complete deferred SynaBun catalog; managed profile choices ' +
186
- 'are runtime-local focus selections. Other hosts use active-profile.json as their future-runtime default.');
187
- }
188
- /**
189
- * Profile state belongs to one MCP server/transport, never to this module.
190
- *
191
- * The HTTP transport keeps several stateful McpServer instances in one Node
192
- * process. Module-global active groups/tool refs made one client's profile.set
193
- * mutate whichever server happened to register last. Stdio still gets one
194
- * ProfileRuntime per process, while HTTP gets one per client session.
195
- */
196
- export class ProfileRuntime {
197
- activeGroups;
198
- activeProfileName;
199
- catalogMode;
200
- role;
201
- capabilities;
202
- platform;
203
- toolGroups = new Map();
204
- onProfileChanged = null;
205
- notificationTimer = null;
206
- constructor(initialProfile, options = {}) {
207
- const normalized = String(initialProfile || 'full').toLowerCase().trim() || 'full';
208
- if (!isValidProfileSelection(normalized)) {
209
- throw new Error(`Unknown MCP profile or tool group selection: ${initialProfile}`);
210
- }
211
- // stdio children of the Codex/OpenCode assistant brains receive the role
212
- // through their launch env; HTTP sessions bind it later via setRole().
213
- this.role = options.role !== undefined ? options.role : sanitizeRole(process.env.SYNABUN_ROLE);
214
- // Same for the desktop grant: env for stdio, setCapabilities() for HTTP.
215
- this.capabilities = new Set(options.capabilities ?? (sanitizeDesktopGrant(process.env.SYNABUN_DESKTOP_GRANT) ? ['computer'] : []));
216
- this.platform = options.platform || process.platform;
217
- this.activeProfileName = normalized;
218
- this.activeGroups = this.resolveGroupsForRole(normalized);
219
- this.catalogMode = options.catalogMode || readToolCatalogMode();
220
- }
221
- getCapabilities() {
222
- return [...this.capabilities];
223
- }
224
- /** Plain setter — callers re-apply the current profile afterwards. */
225
- setCapabilities(capabilities) {
226
- this.capabilities = new Set(capabilities);
227
- }
228
- getActiveProfile() {
229
- return { profile: this.activeProfileName, activeGroups: Array.from(this.activeGroups) };
230
- }
231
- getActiveProfileName() {
232
- return this.activeProfileName;
233
- }
234
- getActiveGroups() {
235
- return this.activeGroups;
236
- }
237
- getCatalogMode() {
238
- return this.catalogMode;
239
- }
240
- getRole() {
241
- return this.role;
242
- }
243
- /** Plain setter — callers re-apply the current profile afterwards so
244
- * role-gated groups flip (index.ts setServerRole does both). */
245
- setRole(role) {
246
- this.role = role;
247
- }
248
- /** Profile groups with the role gate applied: a gated group is active iff
249
- * this runtime's role matches, whatever the profile or registry says. */
250
- resolveGroupsForRole(profileName) {
251
- const groups = resolveProfileGroups(profileName);
252
- for (const [group, gate] of Object.entries(ROLE_GATED_GROUPS)) {
253
- if (this.role === gate)
254
- groups.add(group);
255
- else
256
- groups.delete(group);
257
- }
258
- // Capability gates: computer use exists only on macOS, for grant holders.
259
- for (const [group, capability] of Object.entries(CAPABILITY_GATED_GROUPS)) {
260
- const available = this.capabilities.has(capability) && (capability !== 'computer' || this.platform === 'darwin');
261
- if (available)
262
- groups.add(group);
263
- else
264
- groups.delete(group);
265
- }
266
- return groups;
267
- }
268
- setToolGroup(name, tools) {
269
- this.toolGroups.set(name, tools);
270
- }
271
- setOnProfileChanged(fn) {
272
- this.onProfileChanged = fn;
273
- }
274
- dispose() {
275
- if (this.notificationTimer)
276
- clearTimeout(this.notificationTimer);
277
- this.notificationTimer = null;
278
- this.onProfileChanged = null;
279
- }
280
- /**
281
- * Coalesce one delayed list-changed notification. Delaying is essential:
282
- * OpenCode used to receive the notification while profile.set itself was
283
- * still in flight and could abort/cache the old tool roundtrip.
284
- */
285
- scheduleProfileChangedNotification(delayMs = 10) {
286
- if (!this.onProfileChanged)
287
- return false;
288
- if (this.notificationTimer)
289
- clearTimeout(this.notificationTimer);
290
- this.notificationTimer = setTimeout(() => {
291
- this.notificationTimer = null;
292
- try {
293
- void Promise.resolve(this.onProfileChanged?.()).catch((err) => {
294
- console.error('[SynaBun] profile-change notifier failed:', err);
295
- });
296
- }
297
- catch (err) {
298
- console.error('[SynaBun] profile-change notifier failed:', err);
299
- }
300
- }, Math.max(0, delayMs));
301
- this.notificationTimer.unref?.();
302
- return true;
303
- }
304
- applyProfile(profileName) {
305
- if (!isValidProfileSelection(profileName)) {
306
- throw new Error(`Unknown MCP profile or tool group selection: ${profileName}`);
307
- }
308
- const normalized = profileName.toLowerCase().trim();
309
- const newGroups = this.resolveGroupsForRole(normalized);
310
- const enabled = [];
311
- const disabled = [];
312
- for (const [group, tools] of this.toolGroups) {
313
- const profileEnablesGroup = newGroups.has(group);
314
- // Gated groups (role or capability) ignore the catalog mode: the deferred
315
- // Codex catalog advertises everything else up front, but never a group
316
- // the caller's role or grant does not unlock.
317
- const shouldAdvertise = isGatedGroup(group)
318
- ? profileEnablesGroup
319
- : this.catalogMode === 'deferred' || profileEnablesGroup;
320
- for (const tool of tools) {
321
- // Direct mutation bypasses RegisteredTool.enable()/disable(), each of
322
- // which emits its own notification. The caller schedules one refresh
323
- // only after the profile tool result is ready to return.
324
- if (shouldAdvertise && !tool.enabled)
325
- tool.enabled = true;
326
- if (!shouldAdvertise && tool.enabled)
327
- tool.enabled = false;
328
- }
329
- if (profileEnablesGroup && !this.activeGroups.has(group))
330
- enabled.push(group);
331
- if (!profileEnablesGroup && this.activeGroups.has(group))
332
- disabled.push(group);
333
- }
334
- const previousProfile = this.activeProfileName;
335
- this.activeGroups = newGroups;
336
- this.activeProfileName = normalized;
337
- let totalTools = 11;
338
- for (const [group, tools] of this.toolGroups) {
339
- const advertised = isGatedGroup(group)
340
- ? this.activeGroups.has(group)
341
- : this.catalogMode === 'deferred' || this.activeGroups.has(group);
342
- if (advertised)
343
- totalTools += tools.length;
344
- }
345
- const changed = previousProfile !== normalized || enabled.length > 0 || disabled.length > 0;
346
- if (changed) {
347
- console.error(`[SynaBun] Profile switched to "${normalized}" (${this.activeGroups.size} groups, ${totalTools} tools, +${enabled.join(',') || 'none'}, -${disabled.join(',') || 'none'})`);
348
- }
349
- return { profile: normalized, enabled, disabled, totalTools, changed, catalogMode: this.catalogMode };
350
- }
351
- }
352
- export function persistProfile(profileName) {
353
- const payload = JSON.stringify({ profile: profileName }, null, 2) + '\n';
354
- const paths = new Set([PROFILE_PATH]);
355
- if (process.env.SYNABUN_DATA_HOME) {
356
- paths.add(join(process.env.SYNABUN_DATA_HOME, 'mcp-data', 'active-profile.json'));
357
- paths.add(join(process.env.SYNABUN_DATA_HOME, 'data', 'active-profile.json'));
358
- }
359
- for (const profilePath of paths) {
360
- writeProfileFile(profilePath, payload);
361
- }
362
- }
363
- /**
364
- * Persist only the current host-created runtime selection, when one exists.
365
- * This path is unique to an OpenCode sidepanel/loop/schedule and is removed
366
- * with that runtime. It must never fall back to PROFILE_PATH.
367
- */
368
- export function persistRuntimeProfile(profileName) {
369
- const profilePath = process.env[RUNTIME_PROFILE_PATH_ENV];
370
- if (!profilePath || !isValidProfileSelection(profileName))
371
- return false;
372
- return writeProfileFile(profilePath, JSON.stringify({ profile: profileName.toLowerCase().trim() }, null, 2) + '\n');
373
- }
374
- function writeProfileFile(profilePath, payload) {
375
- try {
376
- const dir = dirname(profilePath);
377
- if (!existsSync(dir))
378
- mkdirSync(dir, { recursive: true });
379
- writeFileSync(profilePath, payload, 'utf-8');
380
- return true;
381
- }
382
- catch (err) {
383
- console.error(`[SynaBun] Failed to persist profile at ${profilePath}:`, err);
384
- return false;
385
- }
386
- }
387
- //# sourceMappingURL=profiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/services/profiles.ts"],"names":[],"mappings":"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"}