synabun 2.0.7 → 2.0.9
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 +38 -0
- package/README.md +1 -1
- package/hooks/claude-code/post-plan.mjs +6 -30
- package/hooks/claude-code/session-start.mjs +1 -4
- package/hooks/claude-code/shared.mjs +106 -72
- package/lib/package-processes.js +670 -0
- package/lib/runtime-dependencies.js +225 -0
- package/mcp-server/dist/services/browser-bench.d.ts +1 -1
- package/mcp-server/dist/services/browser-bench.d.ts.map +1 -1
- package/mcp-server/dist/services/browser-bench.js +1 -1
- package/mcp-server/dist/services/browser-bench.js.map +1 -1
- package/mcp-server/dist/services/categories.d.ts +35 -2
- package/mcp-server/dist/services/categories.d.ts.map +1 -1
- package/mcp-server/dist/services/categories.js +77 -33
- package/mcp-server/dist/services/categories.js.map +1 -1
- package/mcp-server/dist/services/desktop-bench.d.ts +7 -7
- package/mcp-server/dist/services/desktop-bench.d.ts.map +1 -1
- package/mcp-server/dist/services/desktop-bench.js +1 -1
- package/mcp-server/dist/services/desktop-bench.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +1 -1
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +1 -1
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/bluesky.js +1 -1
- package/mcp-server/dist/tools/bluesky.js.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.d.ts +1 -1
- package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.js +1 -1
- package/mcp-server/dist/tools/browser-advanced.js.map +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts +1 -1
- package/mcp-server/dist/tools/browser-batch.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-batch.js +1 -1
- package/mcp-server/dist/tools/browser-batch.js.map +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.d.ts +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.js +1 -1
- package/mcp-server/dist/tools/browser-cheatsheet.js.map +1 -1
- package/mcp-server/dist/tools/browser-interact.d.ts +1 -1
- package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-interact.js +1 -1
- package/mcp-server/dist/tools/browser-interact.js.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.d.ts +1 -1
- package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.js +1 -1
- package/mcp-server/dist/tools/browser-navigate.js.map +1 -1
- package/mcp-server/dist/tools/browser-observe.d.ts +1 -1
- package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-observe.js +1 -1
- package/mcp-server/dist/tools/browser-observe.js.map +1 -1
- package/mcp-server/dist/tools/card-tools.d.ts +1 -1
- package/mcp-server/dist/tools/card-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/card-tools.js +1 -1
- package/mcp-server/dist/tools/card-tools.js.map +1 -1
- package/mcp-server/dist/tools/category.d.ts +1 -1
- package/mcp-server/dist/tools/category.d.ts.map +1 -1
- package/mcp-server/dist/tools/category.js +5 -1
- package/mcp-server/dist/tools/category.js.map +1 -1
- package/mcp-server/dist/tools/choice.d.ts +1 -1
- package/mcp-server/dist/tools/choice.d.ts.map +1 -1
- package/mcp-server/dist/tools/choice.js +1 -1
- package/mcp-server/dist/tools/choice.js.map +1 -1
- package/mcp-server/dist/tools/computer.d.ts +1 -1
- package/mcp-server/dist/tools/computer.d.ts.map +1 -1
- package/mcp-server/dist/tools/computer.js +1 -1
- package/mcp-server/dist/tools/computer.js.map +1 -1
- package/mcp-server/dist/tools/discord-channel.d.ts +1 -1
- package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-channel.js +1 -1
- package/mcp-server/dist/tools/discord-channel.js.map +1 -1
- package/mcp-server/dist/tools/discord-guild.d.ts +1 -1
- package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-guild.js +1 -1
- package/mcp-server/dist/tools/discord-guild.js.map +1 -1
- package/mcp-server/dist/tools/discord-member.d.ts +1 -1
- package/mcp-server/dist/tools/discord-member.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-member.js +1 -1
- package/mcp-server/dist/tools/discord-member.js.map +1 -1
- package/mcp-server/dist/tools/discord-message.d.ts +1 -1
- package/mcp-server/dist/tools/discord-message.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-message.js +1 -1
- package/mcp-server/dist/tools/discord-message.js.map +1 -1
- package/mcp-server/dist/tools/discord-onboarding.d.ts +1 -1
- package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-onboarding.js +1 -1
- package/mcp-server/dist/tools/discord-onboarding.js.map +1 -1
- package/mcp-server/dist/tools/discord-role.d.ts +1 -1
- package/mcp-server/dist/tools/discord-role.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-role.js +1 -1
- package/mcp-server/dist/tools/discord-role.js.map +1 -1
- package/mcp-server/dist/tools/discord-thread.d.ts +1 -1
- package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-thread.js +1 -1
- package/mcp-server/dist/tools/discord-thread.js.map +1 -1
- package/mcp-server/dist/tools/discord-webhook.d.ts +1 -1
- package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -1
- package/mcp-server/dist/tools/discord-webhook.js +1 -1
- package/mcp-server/dist/tools/discord-webhook.js.map +1 -1
- package/mcp-server/dist/tools/fb-groups.d.ts +1 -1
- package/mcp-server/dist/tools/fb-groups.d.ts.map +1 -1
- package/mcp-server/dist/tools/fb-groups.js +1 -1
- package/mcp-server/dist/tools/fb-groups.js.map +1 -1
- package/mcp-server/dist/tools/forget.d.ts +1 -1
- package/mcp-server/dist/tools/forget.d.ts.map +1 -1
- package/mcp-server/dist/tools/forget.js +1 -1
- package/mcp-server/dist/tools/forget.js.map +1 -1
- package/mcp-server/dist/tools/git-tools.d.ts +1 -1
- package/mcp-server/dist/tools/git-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/git-tools.js +1 -1
- package/mcp-server/dist/tools/git-tools.js.map +1 -1
- package/mcp-server/dist/tools/gsc/experience.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/experience.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/experience.js +1 -1
- package/mcp-server/dist/tools/gsc/experience.js.map +1 -1
- package/mcp-server/dist/tools/gsc/indexing.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/indexing.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/indexing.js +1 -1
- package/mcp-server/dist/tools/gsc/indexing.js.map +1 -1
- package/mcp-server/dist/tools/gsc/inspect.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/inspect.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/inspect.js +1 -1
- package/mcp-server/dist/tools/gsc/inspect.js.map +1 -1
- package/mcp-server/dist/tools/gsc/navigate.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/navigate.js +1 -1
- package/mcp-server/dist/tools/gsc/navigate.js.map +1 -1
- package/mcp-server/dist/tools/gsc/performance.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/performance.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/performance.js +1 -1
- package/mcp-server/dist/tools/gsc/performance.js.map +1 -1
- package/mcp-server/dist/tools/gsc/settings.d.ts +1 -1
- package/mcp-server/dist/tools/gsc/settings.d.ts.map +1 -1
- package/mcp-server/dist/tools/gsc/settings.js +1 -1
- package/mcp-server/dist/tools/gsc/settings.js.map +1 -1
- package/mcp-server/dist/tools/image-tools.d.ts +1 -1
- package/mcp-server/dist/tools/image-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/image-tools.js +1 -1
- package/mcp-server/dist/tools/image-tools.js.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -1
- package/mcp-server/dist/tools/loop.d.ts +1 -1
- package/mcp-server/dist/tools/loop.d.ts.map +1 -1
- package/mcp-server/dist/tools/loop.js +1 -1
- package/mcp-server/dist/tools/loop.js.map +1 -1
- package/mcp-server/dist/tools/memories.d.ts +1 -1
- package/mcp-server/dist/tools/memories.d.ts.map +1 -1
- package/mcp-server/dist/tools/memories.js +1 -1
- package/mcp-server/dist/tools/memories.js.map +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts +1 -1
- package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
- package/mcp-server/dist/tools/morelogin.js +1 -1
- package/mcp-server/dist/tools/morelogin.js.map +1 -1
- package/mcp-server/dist/tools/profile.d.ts +1 -1
- package/mcp-server/dist/tools/profile.d.ts.map +1 -1
- package/mcp-server/dist/tools/profile.js +1 -1
- package/mcp-server/dist/tools/profile.js.map +1 -1
- package/mcp-server/dist/tools/recall.d.ts +1 -1
- package/mcp-server/dist/tools/recall.d.ts.map +1 -1
- package/mcp-server/dist/tools/recall.js +1 -1
- package/mcp-server/dist/tools/recall.js.map +1 -1
- package/mcp-server/dist/tools/reflect.d.ts +1 -1
- package/mcp-server/dist/tools/reflect.d.ts.map +1 -1
- package/mcp-server/dist/tools/reflect.js +1 -1
- package/mcp-server/dist/tools/reflect.js.map +1 -1
- package/mcp-server/dist/tools/remember.d.ts +1 -1
- package/mcp-server/dist/tools/remember.d.ts.map +1 -1
- package/mcp-server/dist/tools/remember.js +13 -11
- package/mcp-server/dist/tools/remember.js.map +1 -1
- package/mcp-server/dist/tools/restore.d.ts +1 -1
- package/mcp-server/dist/tools/restore.d.ts.map +1 -1
- package/mcp-server/dist/tools/restore.js +1 -1
- package/mcp-server/dist/tools/restore.js.map +1 -1
- package/mcp-server/dist/tools/style-guide-tools.d.ts +1 -1
- package/mcp-server/dist/tools/style-guide-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/style-guide-tools.js +1 -1
- package/mcp-server/dist/tools/style-guide-tools.js.map +1 -1
- package/mcp-server/dist/tools/sync.d.ts +1 -1
- package/mcp-server/dist/tools/sync.d.ts.map +1 -1
- package/mcp-server/dist/tools/sync.js +1 -1
- package/mcp-server/dist/tools/sync.js.map +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.d.ts +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.js +1 -1
- package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -1
- package/mcp-server/dist/tools/utils.d.ts +1 -1
- package/mcp-server/dist/tools/utils.d.ts.map +1 -1
- package/mcp-server/dist/tools/utils.js +1 -1
- package/mcp-server/dist/tools/utils.js.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.js +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +3 -3
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js +1 -1
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
- package/mcp-server/dist/tools/youtube/analytics.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/analytics.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/analytics.js +1 -1
- package/mcp-server/dist/tools/youtube/analytics.js.map +1 -1
- package/mcp-server/dist/tools/youtube/download.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/download.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/download.js +1 -1
- package/mcp-server/dist/tools/youtube/download.js.map +1 -1
- package/mcp-server/dist/tools/youtube/media.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/media.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/media.js +1 -1
- package/mcp-server/dist/tools/youtube/media.js.map +1 -1
- package/mcp-server/dist/tools/youtube/metadata.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/metadata.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/metadata.js +1 -1
- package/mcp-server/dist/tools/youtube/metadata.js.map +1 -1
- package/mcp-server/dist/tools/youtube/navigate.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/navigate.js +1 -1
- package/mcp-server/dist/tools/youtube/navigate.js.map +1 -1
- package/mcp-server/dist/tools/youtube/playlist.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/playlist.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/playlist.js +1 -1
- package/mcp-server/dist/tools/youtube/playlist.js.map +1 -1
- package/mcp-server/dist/tools/youtube/schedule.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/schedule.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/schedule.js +1 -1
- package/mcp-server/dist/tools/youtube/schedule.js.map +1 -1
- package/mcp-server/dist/tools/youtube/source.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/source.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/source.js +1 -1
- package/mcp-server/dist/tools/youtube/source.js.map +1 -1
- package/mcp-server/dist/tools/youtube/upload.d.ts +1 -1
- package/mcp-server/dist/tools/youtube/upload.d.ts.map +1 -1
- package/mcp-server/dist/tools/youtube/upload.js +4 -9
- package/mcp-server/dist/tools/youtube/upload.js.map +1 -1
- package/mcp-server/dist/tui.js +16 -4
- package/mcp-server/dist/tui.js.map +1 -1
- package/mcp-server/package-lock.json +3 -3
- package/mcp-server/package.json +3 -3
- package/mcp-server/src/services/browser-bench.ts +1 -1
- package/mcp-server/src/services/categories.ts +77 -32
- package/mcp-server/src/services/desktop-bench.ts +1 -1
- package/mcp-server/src/tools/agents.ts +1 -1
- package/mcp-server/src/tools/bluesky.ts +1 -1
- package/mcp-server/src/tools/browser-advanced.ts +1 -1
- package/mcp-server/src/tools/browser-batch.ts +1 -1
- package/mcp-server/src/tools/browser-cheatsheet.ts +1 -1
- package/mcp-server/src/tools/browser-interact.ts +1 -1
- package/mcp-server/src/tools/browser-navigate.ts +1 -1
- package/mcp-server/src/tools/browser-observe.ts +1 -1
- package/mcp-server/src/tools/card-tools.ts +1 -1
- package/mcp-server/src/tools/category.ts +6 -1
- package/mcp-server/src/tools/choice.ts +1 -1
- package/mcp-server/src/tools/computer.ts +1 -1
- package/mcp-server/src/tools/discord-channel.ts +1 -1
- package/mcp-server/src/tools/discord-guild.ts +1 -1
- package/mcp-server/src/tools/discord-member.ts +1 -1
- package/mcp-server/src/tools/discord-message.ts +1 -1
- package/mcp-server/src/tools/discord-onboarding.ts +1 -1
- package/mcp-server/src/tools/discord-role.ts +1 -1
- package/mcp-server/src/tools/discord-thread.ts +1 -1
- package/mcp-server/src/tools/discord-webhook.ts +1 -1
- package/mcp-server/src/tools/fb-groups.ts +1 -1
- package/mcp-server/src/tools/forget.ts +1 -1
- package/mcp-server/src/tools/git-tools.ts +1 -1
- package/mcp-server/src/tools/gsc/experience.ts +1 -1
- package/mcp-server/src/tools/gsc/indexing.ts +1 -1
- package/mcp-server/src/tools/gsc/inspect.ts +1 -1
- package/mcp-server/src/tools/gsc/navigate.ts +1 -1
- package/mcp-server/src/tools/gsc/performance.ts +1 -1
- package/mcp-server/src/tools/gsc/settings.ts +1 -1
- package/mcp-server/src/tools/image-tools.ts +1 -1
- package/mcp-server/src/tools/leonardo-browser-tools.ts +1 -1
- package/mcp-server/src/tools/loop.ts +1 -1
- package/mcp-server/src/tools/memories.ts +1 -1
- package/mcp-server/src/tools/morelogin.ts +1 -1
- package/mcp-server/src/tools/profile.ts +1 -1
- package/mcp-server/src/tools/recall.ts +1 -1
- package/mcp-server/src/tools/reflect.ts +1 -1
- package/mcp-server/src/tools/remember.ts +13 -12
- package/mcp-server/src/tools/restore.ts +1 -1
- package/mcp-server/src/tools/style-guide-tools.ts +1 -1
- package/mcp-server/src/tools/sync.ts +1 -1
- package/mcp-server/src/tools/tictactoe-tools.ts +1 -1
- package/mcp-server/src/tools/utils.ts +1 -1
- package/mcp-server/src/tools/whatsapp-send-file.ts +1 -1
- package/mcp-server/src/tools/whiteboard-tools.ts +1 -1
- package/mcp-server/src/tools/youtube/analytics.ts +1 -1
- package/mcp-server/src/tools/youtube/download.ts +1 -1
- package/mcp-server/src/tools/youtube/media.ts +1 -1
- package/mcp-server/src/tools/youtube/metadata.ts +1 -1
- package/mcp-server/src/tools/youtube/navigate.ts +1 -1
- package/mcp-server/src/tools/youtube/playlist.ts +1 -1
- package/mcp-server/src/tools/youtube/schedule.ts +1 -1
- package/mcp-server/src/tools/youtube/source.ts +1 -1
- package/mcp-server/src/tools/youtube/upload.ts +4 -12
- package/mcp-server/src/tui.ts +22 -9
- package/neural-interface/i18n/en.json +18 -0
- package/neural-interface/i18n/pt-BR.json +18 -0
- package/neural-interface/lib/agent-sandbox-elevation.js +102 -0
- package/neural-interface/lib/agent-sandbox-setting.js +57 -0
- package/neural-interface/lib/assistant-api.js +19 -0
- package/neural-interface/lib/assistant-route-gate-codex.js +3 -1
- package/neural-interface/lib/assistant-runtime.js +5 -1
- package/neural-interface/lib/codex-account-auth.js +4 -2
- package/neural-interface/lib/codex-accounts.js +14 -1
- package/neural-interface/lib/codex-settings-schema.js +5 -3
- package/neural-interface/lib/exec-loop-command.js +3 -1
- package/neural-interface/lib/install-details.js +23 -5
- package/neural-interface/lib/native-loop-providers.js +6 -1
- package/neural-interface/lib/provider-panel-terminal-auth.js +3 -2
- package/neural-interface/lib/session-indexer.js +3 -1
- package/neural-interface/lib/session-title-generator.js +2 -0
- package/neural-interface/package-lock.json +2 -2
- package/neural-interface/package.json +1 -1
- package/neural-interface/public/shared/account-menu.js +4 -1
- package/neural-interface/public/shared/account-usage.js +62 -2
- package/neural-interface/public/shared/account-view.js +2 -1
- package/neural-interface/public/shared/assistant/asst-account-menu.js +298 -0
- package/neural-interface/public/shared/assistant/asst-api.js +7 -0
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +232 -75
- package/neural-interface/public/shared/assistant/asst-menu.js +204 -77
- package/neural-interface/public/shared/assistant/asst-model-chip.js +135 -0
- package/neural-interface/public/shared/assistant/asst-panel.js +39 -2
- package/neural-interface/public/shared/assistant/asst-styles.js +66 -17
- package/neural-interface/public/shared/cdx/cdx-panel.js +1 -1
- package/neural-interface/public/shared/cdx/cdx-styles.js +45 -5
- package/neural-interface/public/shared/cdx/cdx-tabs.js +3 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +4 -1
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +51 -2
- package/neural-interface/public/shared/showcase-privacy.js +2 -1
- package/neural-interface/public/shared/styles.css +3 -1
- package/neural-interface/public/shared/ui-claude-panel.js +50 -4
- package/neural-interface/public/shared/ui-explorer.js +2 -0
- package/neural-interface/public/shared/ui-sync.js +2 -0
- package/neural-interface/public/shared/ui-update.js +4 -2
- package/neural-interface/scripts/rebuild-pty.js +14 -2
- package/neural-interface/server.js +180 -86
- package/npm-shrinkwrap.json +4424 -0
- package/package.json +54 -2
- package/postinstall.js +61 -47
- package/preuninstall.js +8 -35
- package/setup.js +76 -44
- package/skills/synabun/modules/idea.md +1 -1
- package/skills/synabun/modules/schedule.md +1 -1
- package/updater.cmd +2 -2
- package/updater.mjs +97 -3
|
@@ -166,39 +166,12 @@ function saveCategoriesToDisk(categories: CustomCategory[]): void {
|
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
/**
|
|
170
|
-
* Built-in categories that must always exist (created if missing on startup).
|
|
171
|
-
* youtube-videos is the trailer dedup ledger that youtube_upload writes and
|
|
172
|
-
* youtube_source reads — pre-seeding it means manual remember / the UI / routing
|
|
173
|
-
* all see it, not just the validation-bypassing auto-record path.
|
|
174
|
-
*/
|
|
175
|
-
const BUILTIN_CATEGORIES: Array<{ name: string; description: string; parent?: string }> = [
|
|
176
|
-
{
|
|
177
|
-
name: 'youtube-videos',
|
|
178
|
-
description: 'One memory per uploaded YouTube trailer — the dedup ledger. Written automatically by youtube_upload; tagged with canonical source ids (igdb:/appid:/ytid:/name:) that youtube_source reads to skip already-posted trailers. Do not store anything else here.',
|
|
179
|
-
parent: 'social',
|
|
180
|
-
},
|
|
181
|
-
];
|
|
182
|
-
|
|
183
|
-
/** Append any missing built-in categories and persist. Idempotent. */
|
|
184
|
-
function ensureBuiltinCategories(): void {
|
|
185
|
-
const cats = loadCategoriesFromDisk();
|
|
186
|
-
const have = new Set(cats.map((c) => c.name));
|
|
187
|
-
let changed = false;
|
|
188
|
-
for (const b of BUILTIN_CATEGORIES) {
|
|
189
|
-
if (have.has(b.name)) continue;
|
|
190
|
-
const cat: CustomCategory = { name: b.name, description: b.description, created_at: new Date().toISOString() };
|
|
191
|
-
if (b.parent && have.has(b.parent)) cat.parent = b.parent; // only attach the parent if it exists
|
|
192
|
-
cats.push(cat);
|
|
193
|
-
changed = true;
|
|
194
|
-
}
|
|
195
|
-
if (changed) saveCategoriesToDisk(cats);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
169
|
/**
|
|
199
170
|
* Initialize the local category cache for the active connection.
|
|
200
|
-
* Seeds the cache file from SQLite (source of truth) or empty
|
|
201
|
-
*
|
|
171
|
+
* Seeds the cache file from SQLite (source of truth), or empty when the DB has none.
|
|
172
|
+
* No category is created here: a fresh install has none. A project's defaults are
|
|
173
|
+
* made when the project is added, a feature's category the first time it saves
|
|
174
|
+
* (ensureCategory / ensureFeatureCategory).
|
|
202
175
|
*/
|
|
203
176
|
export async function initCategoryCache(): Promise<void> {
|
|
204
177
|
const filePath = getCategoriesPath();
|
|
@@ -214,10 +187,82 @@ export async function initCategoryCache(): Promise<void> {
|
|
|
214
187
|
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
|
|
215
188
|
}
|
|
216
189
|
|
|
217
|
-
ensureBuiltinCategories();
|
|
218
190
|
invalidateCategoryCache();
|
|
219
191
|
}
|
|
220
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Categories that features save into by name. None exists on a fresh install:
|
|
195
|
+
* each is created the first time something is stored in it (ensureFeatureCategory),
|
|
196
|
+
* whether the writer is SynaBun itself or a model told to use that name by a hook.
|
|
197
|
+
* Keep the descriptions in step with hooks/claude-code/shared.mjs FEATURE_CATEGORIES.
|
|
198
|
+
*/
|
|
199
|
+
export const FEATURE_CATEGORIES: Record<string, { description: string; is_parent?: boolean }> = {
|
|
200
|
+
conversations: {
|
|
201
|
+
description: 'Indexed conversation sessions with compacted summaries for cross-session recall: session metadata (date, branch, session id) and topic summaries, so past conversations can be found by asking for them.',
|
|
202
|
+
},
|
|
203
|
+
'communication-style': {
|
|
204
|
+
description: 'How the user communicates and works: patterns in how they give instructions, correct, decide and signal frustration, and their stated preferences.',
|
|
205
|
+
},
|
|
206
|
+
plans: {
|
|
207
|
+
description: 'Implementation plans stored after plan mode approval, one child category per project.',
|
|
208
|
+
is_parent: true,
|
|
209
|
+
},
|
|
210
|
+
uncategorized: {
|
|
211
|
+
description: 'Fallback for memories stored without a category.',
|
|
212
|
+
},
|
|
213
|
+
ideas: {
|
|
214
|
+
description: 'Brainstormed features, experiments, and creative explorations (the /synabun idea skill).',
|
|
215
|
+
},
|
|
216
|
+
schedules: {
|
|
217
|
+
description: 'One memory per schedule created from a conversation (the /synabun schedule skill): name, template, schedule id, cron, group, profile and model.',
|
|
218
|
+
},
|
|
219
|
+
'youtube-videos': {
|
|
220
|
+
description: 'One memory per uploaded YouTube trailer — the dedup ledger. Written automatically by youtube_upload; tagged with canonical source ids (igdb:/appid:/ytid:/name:) that youtube_source reads to skip already-posted trailers. Do not store anything else here.',
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Create a category the first time something saves into it. Idempotent: an existing
|
|
226
|
+
* category is left exactly as it is. The parent is attached only when it already
|
|
227
|
+
* exists. Returns true when the category exists afterwards.
|
|
228
|
+
*/
|
|
229
|
+
export function ensureCategory(name: string, description: string, options: { parent?: string; is_parent?: boolean } = {}): boolean {
|
|
230
|
+
try {
|
|
231
|
+
if (categoryExists(name)) return true;
|
|
232
|
+
const parent = options.parent && categoryExists(options.parent) ? options.parent : undefined;
|
|
233
|
+
addCategory(name, description, parent, undefined, options.is_parent && !parent);
|
|
234
|
+
return true;
|
|
235
|
+
} catch (err) {
|
|
236
|
+
console.error(`Failed to create category "${name}":`, err instanceof Error ? err.message : err);
|
|
237
|
+
return categoryExists(name);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* ensureCategory for a name of FEATURE_CATEGORIES, or a project's plan category
|
|
243
|
+
* `plans-<project>` (made under "plans", as hooks/claude-code/post-plan.mjs does);
|
|
244
|
+
* false for any other name.
|
|
245
|
+
*/
|
|
246
|
+
export function ensureFeatureCategory(name: string): boolean {
|
|
247
|
+
const feature = Object.prototype.hasOwnProperty.call(FEATURE_CATEGORIES, name) ? FEATURE_CATEGORIES[name] : null;
|
|
248
|
+
if (feature) return ensureCategory(name, feature.description, { is_parent: feature.is_parent });
|
|
249
|
+
if (/^plans-[a-z0-9][a-z0-9-]*$/.test(name) && name.length <= MAX_LENGTH && ensureFeatureCategory('plans')) {
|
|
250
|
+
return ensureCategory(name, `Implementation plans for ${name.slice('plans-'.length)} project`, { parent: 'plans' });
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* The name of a project's default parent category, as the project's defaults
|
|
257
|
+
* are created (hooks/claude-code/shared.mjs projectCategoryLabel): the label
|
|
258
|
+
* normalized and cut to 16 characters, so `<label>-architecture` stays within 30.
|
|
259
|
+
*/
|
|
260
|
+
export function projectCategoryLabel(project: string): string {
|
|
261
|
+
let label = String(project || '').toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
262
|
+
if (label.length > 16) label = label.slice(0, 16).replace(/-$/, '');
|
|
263
|
+
return label || 'global';
|
|
264
|
+
}
|
|
265
|
+
|
|
221
266
|
/**
|
|
222
267
|
* Call after a connection switch to re-point the file watcher
|
|
223
268
|
* at the new connection's category file and sync from database if needed.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { readdirSync, readFileSync } from 'node:fs';
|
|
17
17
|
import path from 'node:path';
|
|
18
18
|
import { performance } from 'node:perf_hooks';
|
|
19
|
-
import { z } from 'zod';
|
|
19
|
+
import { z } from 'zod/v3';
|
|
20
20
|
import type { JudgeUsage } from './typesafe.js';
|
|
21
21
|
import { typesafeConfig, mutateTypeSafeConfig, type TypeSafeConfig } from './typesafe-config.js';
|
|
22
22
|
import { hashCorpusFiles, isPinnedModel } from './browser-assist-gate.js';
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* reloading the tab once) and only then reports "not logged in" — when the page
|
|
22
22
|
* really holds no session.
|
|
23
23
|
*/
|
|
24
|
-
import { z } from 'zod';
|
|
24
|
+
import { z } from 'zod/v3';
|
|
25
25
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
26
26
|
import * as ni from '../services/neural-interface.js';
|
|
27
27
|
import { text } from './response.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import * as ni from '../services/neural-interface.js';
|
|
3
3
|
import { getMemory } from '../services/sqlite.js';
|
|
4
4
|
import { cleanName, parseSeedQueue, regionForSeed, resolveClassification } from '../services/fb-regions.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import {
|
|
3
3
|
validateCategoryName,
|
|
4
4
|
addCategory,
|
|
@@ -86,6 +86,11 @@ async function handleCreate(args: {
|
|
|
86
86
|
return text('Invalid color format. Use hex format: #rrggbb (e.g., #3b82f6)');
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
// A child under a parent that does not exist would be dangling (a fresh install has no categories at all).
|
|
90
|
+
if (args.parent && !categoryExists(args.parent)) {
|
|
91
|
+
return text(`Parent category "${args.parent}" does not exist. Create "${args.name}" with no parent, or create the parent first. Available: ${getAllCategories().join(', ') || '(none)'}`);
|
|
92
|
+
}
|
|
93
|
+
|
|
89
94
|
addCategory(args.name, args.description.trim(), args.parent, args.color, args.is_parent);
|
|
90
95
|
refreshCategorySchemas();
|
|
91
96
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { callerDesktopGrant } from '../services/identity.js';
|
|
4
4
|
import { desktopAct, desktopApps, desktopAx, desktopStatus, type DesktopResponse } from '../services/desktop-client.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* gsc_manual_actions, gsc_enhancements, gsc_links_report, gsc_links_export
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate, TABLE_EXTRACTOR_SCRIPT, readMetricTileScript } from './helpers.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* gsc_sitemap, gsc_removals, gsc_removals_cancel
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate, TABLE_EXTRACTOR_SCRIPT, readMetricTileScript } from './helpers.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* gsc_inspect_url, gsc_inspect_test_live, gsc_inspect_request_indexing, gsc_inspect_view_crawled
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { z } from 'zod';
|
|
6
|
+
import { z } from 'zod/v3';
|
|
7
7
|
import * as ni from '../../services/neural-interface.js';
|
|
8
8
|
import { text } from '../response.js';
|
|
9
9
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate } from './helpers.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Tools: gsc_navigate, gsc_property
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { z } from 'zod';
|
|
6
|
+
import { z } from 'zod/v3';
|
|
7
7
|
import * as ni from '../../services/neural-interface.js';
|
|
8
8
|
import { text } from '../response.js';
|
|
9
9
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate } from './helpers.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* gsc_performance_query, gsc_performance_export, gsc_performance_chart_screenshot
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { z } from 'zod';
|
|
6
|
+
import { z } from 'zod/v3';
|
|
7
7
|
import * as ni from '../../services/neural-interface.js';
|
|
8
8
|
import { text } from '../response.js';
|
|
9
9
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate, TABLE_EXTRACTOR_SCRIPT, readMetricTileScript } from './helpers.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* gsc_disavow, gsc_shopping, gsc_extract_table, gsc_screenshot
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { GSC_BASE, encodeProperty, currentProperty, ensureAuth, resolve, wait, pollFor, safeNavigate, TABLE_EXTRACTOR_SCRIPT, readMetricTileScript } from './helpers.js';
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Tools: leonardo_browser_navigate, leonardo_browser_generate, leonardo_browser_library, leonardo_browser_download, leonardo_browser_reference
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { z } from 'zod';
|
|
9
|
+
import { z } from 'zod/v3';
|
|
10
10
|
import * as ni from '../services/neural-interface.js';
|
|
11
11
|
import { text } from './response.js';
|
|
12
12
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import { scrollMemories, getMemoryStats, getMemory, rowToSessionChunkPayload } from '../services/sqlite.js';
|
|
3
3
|
import { validateCategory } from '../services/categories.js';
|
|
4
4
|
import type { MemoryPayload } from '../types.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import { text } from './response.js';
|
|
3
3
|
import { VALID_GROUPS, getProfilePresets, persistRuntimeProfile, type ProfileRuntime } from '../services/profiles.js';
|
|
4
4
|
import { reportRuntimeMcpProfile, type RuntimeMcpProfileReport } from '../services/neural-interface.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import { getMemory, updatePayload, upsertMemory, getDb, memoryVectors } from '../services/sqlite.js';
|
|
3
3
|
import { generateEmbedding } from '../services/local-embeddings.js';
|
|
4
4
|
import { validateCategory } from '../services/categories.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { writeMemory, IdempotencyConflict, type WriteMemoryResult } from '../services/memory-writer.js';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import { categoryExists,
|
|
3
|
+
import { z } from 'zod/v3';
|
|
4
|
+
import { categoryExists, ensureCategory, ensureFeatureCategory, getCategories, projectCategoryLabel } from '../services/categories.js';
|
|
5
5
|
import { coerceStringArray } from './utils.js';
|
|
6
6
|
import type { MemoryPayload, MemorySource } from '../types.js';
|
|
7
7
|
import { detectProject, projectRoot } from '../config.js';
|
|
@@ -112,22 +112,23 @@ export const rememberDescription =
|
|
|
112
112
|
|
|
113
113
|
/**
|
|
114
114
|
* Resolve the category to store under. If the caller supplied a valid category,
|
|
115
|
-
* use it verbatim.
|
|
116
|
-
*
|
|
115
|
+
* use it verbatim. A feature's category (conversations, communication-style, …)
|
|
116
|
+
* is created the first time it is asked for: a fresh install has none. Anything
|
|
117
|
+
* else falls back to the project's default child, created if it is missing, so a
|
|
118
|
+
* memory is never lost just because the required field was omitted or misspelled.
|
|
117
119
|
* Returns the chosen category and whether a fallback was applied.
|
|
118
120
|
*/
|
|
119
121
|
function resolveCategory(requested: string | undefined, project: string): { category: string; fallback: boolean } {
|
|
120
122
|
if (requested && categoryExists(requested)) {
|
|
121
123
|
return { category: requested, fallback: false };
|
|
122
124
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return { category: chosen, fallback: true };
|
|
125
|
+
if (requested && ensureFeatureCategory(requested)) {
|
|
126
|
+
return { category: requested, fallback: false };
|
|
127
|
+
}
|
|
128
|
+
const label = projectCategoryLabel(project);
|
|
129
|
+
const projectDefault = `${label}-project`;
|
|
130
|
+
ensureCategory(projectDefault, `General project knowledge, decisions, and milestones for ${project}`, { parent: label });
|
|
131
|
+
return { category: projectDefault, fallback: true };
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
export async function handleRemember(args: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
2
|
import * as ni from '../services/neural-interface.js';
|
|
3
3
|
import { text, image } from './response.js';
|
|
4
4
|
import { SHAPE_TYPES, SECTION_TYPE_NAMES, ELEMENT_TYPES, DEFAULT_VIEWPORT, type WbElement, type WbViewport } from '../services/whiteboard-geometry.js';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* used by the autopilot to dedupe against what's already posted.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { z } from 'zod';
|
|
8
|
+
import { z } from 'zod/v3';
|
|
9
9
|
import * as ni from '../../services/neural-interface.js';
|
|
10
10
|
import { text } from '../response.js';
|
|
11
11
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, type Resolved } from './helpers.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Both operate on the Studio video editor pages.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, clickStudio, type Resolved } from './helpers.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Visibility/scheduling is handled by youtube_schedule.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, clickStudio, fillStudio, type Resolved } from './helpers.js';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Tools: youtube_navigate
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { z } from 'zod';
|
|
8
|
+
import { z } from 'zod/v3';
|
|
9
9
|
import * as ni from '../../services/neural-interface.js';
|
|
10
10
|
import { text } from '../response.js';
|
|
11
11
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, type Resolved } from './helpers.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* the video edit page's Playlists dropdown).
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { z } from 'zod';
|
|
7
|
+
import { z } from 'zod/v3';
|
|
8
8
|
import * as ni from '../../services/neural-interface.js';
|
|
9
9
|
import { text } from '../response.js';
|
|
10
10
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, clickStudio, fillStudio, DEEP_TEXT_SCRIPT, type Resolved } from './helpers.js';
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* and read the picker back so a mis-parsed date is visible, not silent.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { z } from 'zod';
|
|
11
|
+
import { z } from 'zod/v3';
|
|
12
12
|
import * as ni from '../../services/neural-interface.js';
|
|
13
13
|
import { text } from '../response.js';
|
|
14
14
|
import { STUDIO_BASE, resolve, ensureAuth, wait, pollFor, safeNavigate, clickStudio, fillStudio } from './helpers.js';
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* recall-then-eyeball flow did, and can never re-pick a posted trailer.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import { z } from 'zod';
|
|
14
|
+
import { z } from 'zod/v3';
|
|
15
15
|
import * as ni from '../../services/neural-interface.js';
|
|
16
16
|
import { getPostedTrailerKeys } from '../../services/sqlite.js';
|
|
17
17
|
import { candidateDedupKeys } from './dedup.js';
|