@intent-systems/nexus 2026.1.5-3
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 +222 -0
- package/LICENSE +21 -0
- package/README-header.png +0 -0
- package/README.md +462 -0
- package/dist/agents/agent-paths.js +16 -0
- package/dist/agents/agent-scope.js +44 -0
- package/dist/agents/auth-profiles.js +626 -0
- package/dist/agents/bash-process-registry.js +126 -0
- package/dist/agents/bash-tools.js +838 -0
- package/dist/agents/chutes-oauth.js +47 -0
- package/dist/agents/clawdbot-tools.js +62 -0
- package/dist/agents/context.js +34 -0
- package/dist/agents/defaults.js +6 -0
- package/dist/agents/memory-search.js +80 -0
- package/dist/agents/model-auth.js +115 -0
- package/dist/agents/model-catalog.js +55 -0
- package/dist/agents/model-fallback.js +210 -0
- package/dist/agents/model-scan.js +263 -0
- package/dist/agents/model-selection.js +152 -0
- package/dist/agents/models-config.js +171 -0
- package/dist/agents/nexus-tools.js +46 -0
- package/dist/agents/pi-embedded-block-chunker.js +188 -0
- package/dist/agents/pi-embedded-helpers.js +139 -0
- package/dist/agents/pi-embedded-runner.js +932 -0
- package/dist/agents/pi-embedded-subscribe.js +541 -0
- package/dist/agents/pi-embedded-utils.js +20 -0
- package/dist/agents/pi-embedded.js +1 -0
- package/dist/agents/pi-extensions/compaction-safeguard.js +140 -0
- package/dist/agents/pi-tool-definition-adapter.js +17 -0
- package/dist/agents/pi-tools.js +510 -0
- package/dist/agents/pi-tools.schema.js +358 -0
- package/dist/agents/sandbox-paths.js +68 -0
- package/dist/agents/sandbox.js +667 -0
- package/dist/agents/shell-utils.js +53 -0
- package/dist/agents/skill-runner.js +224 -0
- package/dist/agents/skill-state.js +164 -0
- package/dist/agents/skill-tools.js +191 -0
- package/dist/agents/skill-usage.js +43 -0
- package/dist/agents/skills-install.js +244 -0
- package/dist/agents/skills-status.js +157 -0
- package/dist/agents/skills.js +472 -0
- package/dist/agents/subagent-registry.js +321 -0
- package/dist/agents/subagent-registry.store.js +47 -0
- package/dist/agents/system-prompt.js +179 -0
- package/dist/agents/timeout.js +26 -0
- package/dist/agents/tool-display.js +155 -0
- package/dist/agents/tool-display.json +236 -0
- package/dist/agents/tool-images.js +138 -0
- package/dist/agents/tool-policy.js +87 -0
- package/dist/agents/tools/agent-step.js +41 -0
- package/dist/agents/tools/browser-tool.js +295 -0
- package/dist/agents/tools/canvas-tool.js +193 -0
- package/dist/agents/tools/common.js +88 -0
- package/dist/agents/tools/cron-tool.js +141 -0
- package/dist/agents/tools/discord-actions-guild.js +186 -0
- package/dist/agents/tools/discord-actions-messaging.js +313 -0
- package/dist/agents/tools/discord-actions-moderation.js +70 -0
- package/dist/agents/tools/discord-actions.js +56 -0
- package/dist/agents/tools/discord-schema.js +199 -0
- package/dist/agents/tools/discord-tool.js +16 -0
- package/dist/agents/tools/gateway-tool.js +46 -0
- package/dist/agents/tools/gateway.js +28 -0
- package/dist/agents/tools/image-tool.js +140 -0
- package/dist/agents/tools/memory-tool.js +92 -0
- package/dist/agents/tools/nodes-tool.js +413 -0
- package/dist/agents/tools/nodes-utils.js +92 -0
- package/dist/agents/tools/sessions-announce-target.js +35 -0
- package/dist/agents/tools/sessions-helpers.js +88 -0
- package/dist/agents/tools/sessions-history-tool.js +137 -0
- package/dist/agents/tools/sessions-list-tool.js +196 -0
- package/dist/agents/tools/sessions-send-helpers.js +103 -0
- package/dist/agents/tools/sessions-send-tool.js +371 -0
- package/dist/agents/tools/sessions-spawn-tool.js +319 -0
- package/dist/agents/tools/slack-actions.js +129 -0
- package/dist/agents/tools/slack-schema.js +59 -0
- package/dist/agents/tools/slack-tool.js +16 -0
- package/dist/agents/tools/telegram-actions.js +159 -0
- package/dist/agents/tools/telegram-schema.js +28 -0
- package/dist/agents/tools/telegram-tool.js +16 -0
- package/dist/agents/tools/whatsapp-login-tool.js +63 -0
- package/dist/agents/usage.js +58 -0
- package/dist/agents/workspace.js +264 -0
- package/dist/auto-reply/chunk.js +177 -0
- package/dist/auto-reply/command-auth.js +44 -0
- package/dist/auto-reply/command-detection.js +22 -0
- package/dist/auto-reply/envelope.js +30 -0
- package/dist/auto-reply/group-activation.js +20 -0
- package/dist/auto-reply/heartbeat.js +58 -0
- package/dist/auto-reply/model.js +22 -0
- package/dist/auto-reply/reply/abort.js +14 -0
- package/dist/auto-reply/reply/agent-runner.js +426 -0
- package/dist/auto-reply/reply/bash-command.js +314 -0
- package/dist/auto-reply/reply/block-streaming.js +34 -0
- package/dist/auto-reply/reply/body.js +29 -0
- package/dist/auto-reply/reply/commands.js +332 -0
- package/dist/auto-reply/reply/directive-handling.js +626 -0
- package/dist/auto-reply/reply/directives.js +59 -0
- package/dist/auto-reply/reply/dispatch-from-config.js +23 -0
- package/dist/auto-reply/reply/followup-runner.js +181 -0
- package/dist/auto-reply/reply/groups.js +152 -0
- package/dist/auto-reply/reply/mentions.js +64 -0
- package/dist/auto-reply/reply/model-selection.js +209 -0
- package/dist/auto-reply/reply/queue.js +399 -0
- package/dist/auto-reply/reply/reply-dispatcher.js +68 -0
- package/dist/auto-reply/reply/reply-tags.js +26 -0
- package/dist/auto-reply/reply/session-updates.js +103 -0
- package/dist/auto-reply/reply/session.js +169 -0
- package/dist/auto-reply/reply/typing.js +125 -0
- package/dist/auto-reply/reply.js +655 -0
- package/dist/auto-reply/send-policy.js +28 -0
- package/dist/auto-reply/status.js +197 -0
- package/dist/auto-reply/templating.js +9 -0
- package/dist/auto-reply/thinking.js +49 -0
- package/dist/auto-reply/tokens.js +2 -0
- package/dist/auto-reply/tool-meta.js +74 -0
- package/dist/auto-reply/transcription.js +57 -0
- package/dist/auto-reply/types.js +1 -0
- package/dist/browser/bridge-server.js +37 -0
- package/dist/browser/cdp.js +382 -0
- package/dist/browser/chrome.js +432 -0
- package/dist/browser/client-actions-core.js +67 -0
- package/dist/browser/client-actions-observe.js +24 -0
- package/dist/browser/client-actions-types.js +1 -0
- package/dist/browser/client-actions.js +3 -0
- package/dist/browser/client-fetch.js +43 -0
- package/dist/browser/client.js +105 -0
- package/dist/browser/config.js +155 -0
- package/dist/browser/constants.js +5 -0
- package/dist/browser/profiles-service.js +124 -0
- package/dist/browser/profiles.js +96 -0
- package/dist/browser/pw-ai.js +2 -0
- package/dist/browser/pw-session.js +144 -0
- package/dist/browser/pw-tools-core.js +363 -0
- package/dist/browser/routes/agent.js +535 -0
- package/dist/browser/routes/basic.js +155 -0
- package/dist/browser/routes/index.js +8 -0
- package/dist/browser/routes/tabs.js +105 -0
- package/dist/browser/routes/utils.js +62 -0
- package/dist/browser/screenshot.js +40 -0
- package/dist/browser/server-context.js +377 -0
- package/dist/browser/server.js +81 -0
- package/dist/browser/target-id.js +18 -0
- package/dist/browser/trash.js +21 -0
- package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
- package/dist/canvas-host/a2ui/index.html +246 -0
- package/dist/canvas-host/a2ui.js +187 -0
- package/dist/canvas-host/server.js +382 -0
- package/dist/channel-web.js +8 -0
- package/dist/cli/browser-cli-actions-input.js +459 -0
- package/dist/cli/browser-cli-actions-observe.js +56 -0
- package/dist/cli/browser-cli-examples.js +31 -0
- package/dist/cli/browser-cli-inspect.js +97 -0
- package/dist/cli/browser-cli-manage.js +286 -0
- package/dist/cli/browser-cli-shared.js +1 -0
- package/dist/cli/browser-cli.js +26 -0
- package/dist/cli/canvas-cli.js +416 -0
- package/dist/cli/cloud-cli.js +336 -0
- package/dist/cli/credential-cli.js +227 -0
- package/dist/cli/cron-cli.js +454 -0
- package/dist/cli/deps.js +17 -0
- package/dist/cli/dns-cli.js +180 -0
- package/dist/cli/gateway-cli.js +665 -0
- package/dist/cli/gateway-rpc.js +20 -0
- package/dist/cli/hooks-cli.js +135 -0
- package/dist/cli/memory-cli.js +101 -0
- package/dist/cli/models-cli.js +248 -0
- package/dist/cli/nodes-camera.js +57 -0
- package/dist/cli/nodes-canvas.js +26 -0
- package/dist/cli/nodes-cli.js +946 -0
- package/dist/cli/nodes-screen.js +37 -0
- package/dist/cli/pairing-cli.js +100 -0
- package/dist/cli/parse-duration.js +20 -0
- package/dist/cli/plugins-cli.js +158 -0
- package/dist/cli/ports.js +97 -0
- package/dist/cli/profile.js +81 -0
- package/dist/cli/program.js +162 -0
- package/dist/cli/prompt.js +19 -0
- package/dist/cli/run-main.js +48 -0
- package/dist/cli/skills-cli.js +132 -0
- package/dist/cli/skills-hub-cli.js +1093 -0
- package/dist/cli/telegram-cli.js +56 -0
- package/dist/cli/tool-connector-cli.js +118 -0
- package/dist/cli/tui-cli.js +35 -0
- package/dist/cli/upstream-sync-cli.js +2833 -0
- package/dist/cli/usage-cli.js +24 -0
- package/dist/cli/wait.js +8 -0
- package/dist/commands/agent-via-gateway.js +115 -0
- package/dist/commands/agent.js +665 -0
- package/dist/commands/antigravity-oauth.js +327 -0
- package/dist/commands/auth-choice-options.js +80 -0
- package/dist/commands/auth-choice.js +134 -0
- package/dist/commands/auth-token.js +31 -0
- package/dist/commands/bootstrap-preset.js +214 -0
- package/dist/commands/capabilities.js +36 -0
- package/dist/commands/chutes-oauth.js +144 -0
- package/dist/commands/claude-md.js +137 -0
- package/dist/commands/config-view.js +11 -0
- package/dist/commands/configure.js +648 -0
- package/dist/commands/credential.js +236 -0
- package/dist/commands/cursor-rules.js +230 -0
- package/dist/commands/doctor-state-migrations.js +358 -0
- package/dist/commands/doctor-ui.js +113 -0
- package/dist/commands/doctor.js +673 -0
- package/dist/commands/health.js +112 -0
- package/dist/commands/identity.js +54 -0
- package/dist/commands/init.js +167 -0
- package/dist/commands/models/aliases.js +85 -0
- package/dist/commands/models/fallbacks.js +123 -0
- package/dist/commands/models/image-fallbacks.js +123 -0
- package/dist/commands/models/list.js +347 -0
- package/dist/commands/models/scan.js +271 -0
- package/dist/commands/models/set-image.js +27 -0
- package/dist/commands/models/set.js +27 -0
- package/dist/commands/models/shared.js +73 -0
- package/dist/commands/models.js +7 -0
- package/dist/commands/onboard-auth.js +101 -0
- package/dist/commands/onboard-channels.js +814 -0
- package/dist/commands/onboard-eve-identity.js +98 -0
- package/dist/commands/onboard-github.js +153 -0
- package/dist/commands/onboard-helpers.js +303 -0
- package/dist/commands/onboard-interactive.js +17 -0
- package/dist/commands/onboard-non-interactive.js +228 -0
- package/dist/commands/onboard-providers.js +829 -0
- package/dist/commands/onboard-quickstart.js +185 -0
- package/dist/commands/onboard-remote.js +120 -0
- package/dist/commands/onboard-skills.js +148 -0
- package/dist/commands/onboard-types.js +1 -0
- package/dist/commands/onboard.js +19 -0
- package/dist/commands/openai-codex-model-default.js +38 -0
- package/dist/commands/poll.js +64 -0
- package/dist/commands/quest.js +27 -0
- package/dist/commands/reset.js +61 -0
- package/dist/commands/send.js +124 -0
- package/dist/commands/sessions-ingest.js +359 -0
- package/dist/commands/sessions.js +212 -0
- package/dist/commands/setup.js +59 -0
- package/dist/commands/signal-install.js +135 -0
- package/dist/commands/skills-manifest.js +235 -0
- package/dist/commands/status.js +139 -0
- package/dist/commands/suggestions.js +54 -0
- package/dist/commands/systemd-linger.js +71 -0
- package/dist/commands/update.js +16 -0
- package/dist/commands/usage-upload.js +27 -0
- package/dist/config/config.js +6 -0
- package/dist/config/defaults.js +140 -0
- package/dist/config/group-policy.js +49 -0
- package/dist/config/includes.js +183 -0
- package/dist/config/io.js +188 -0
- package/dist/config/legacy-migrate.js +13 -0
- package/dist/config/legacy.js +425 -0
- package/dist/config/paths.js +82 -0
- package/dist/config/port-defaults.js +32 -0
- package/dist/config/schema.js +173 -0
- package/dist/config/sessions.js +611 -0
- package/dist/config/talk.js +31 -0
- package/dist/config/types.js +1 -0
- package/dist/config/validation.js +29 -0
- package/dist/config/zod-schema.js +1110 -0
- package/dist/control-ui/assets/index-D8Q5AI4D.js +2393 -0
- package/dist/control-ui/assets/index-D8Q5AI4D.js.map +1 -0
- package/dist/control-ui/assets/index-g06q5Xc3.css +1 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/index.html +16 -0
- package/dist/cron/isolated-agent.js +529 -0
- package/dist/cron/normalize.js +73 -0
- package/dist/cron/parse.js +24 -0
- package/dist/cron/run-log.js +72 -0
- package/dist/cron/schedule.js +24 -0
- package/dist/cron/service.js +471 -0
- package/dist/cron/store.js +43 -0
- package/dist/cron/types.js +1 -0
- package/dist/daemon/constants.js +10 -0
- package/dist/daemon/launchd.js +295 -0
- package/dist/daemon/legacy.js +63 -0
- package/dist/daemon/program-args.js +141 -0
- package/dist/daemon/schtasks.js +269 -0
- package/dist/daemon/service.js +69 -0
- package/dist/daemon/systemd.js +332 -0
- package/dist/discord/index.js +2 -0
- package/dist/discord/monitor.js +1089 -0
- package/dist/discord/probe.js +54 -0
- package/dist/discord/send.js +652 -0
- package/dist/discord/token.js +8 -0
- package/dist/entry.js +16 -0
- package/dist/gateway/auth.js +121 -0
- package/dist/gateway/call.js +103 -0
- package/dist/gateway/chat-attachments.js +41 -0
- package/dist/gateway/client.js +180 -0
- package/dist/gateway/config-reload.js +274 -0
- package/dist/gateway/control-ui.js +184 -0
- package/dist/gateway/hooks-mapping.js +282 -0
- package/dist/gateway/hooks.js +168 -0
- package/dist/gateway/net.js +29 -0
- package/dist/gateway/protocol/index.js +62 -0
- package/dist/gateway/protocol/schema.js +577 -0
- package/dist/gateway/server-bridge-subscriptions.js +93 -0
- package/dist/gateway/server-bridge.js +1066 -0
- package/dist/gateway/server-browser.js +11 -0
- package/dist/gateway/server-channels.js +680 -0
- package/dist/gateway/server-chat.js +159 -0
- package/dist/gateway/server-constants.js +8 -0
- package/dist/gateway/server-discovery.js +62 -0
- package/dist/gateway/server-http.js +165 -0
- package/dist/gateway/server-methods/agent-job.js +114 -0
- package/dist/gateway/server-methods/agent.js +254 -0
- package/dist/gateway/server-methods/channels.js +239 -0
- package/dist/gateway/server-methods/chat.js +207 -0
- package/dist/gateway/server-methods/config.js +50 -0
- package/dist/gateway/server-methods/connect.js +6 -0
- package/dist/gateway/server-methods/cron.js +89 -0
- package/dist/gateway/server-methods/health.js +28 -0
- package/dist/gateway/server-methods/models.js +16 -0
- package/dist/gateway/server-methods/nodes.js +294 -0
- package/dist/gateway/server-methods/providers.js +257 -0
- package/dist/gateway/server-methods/send.js +254 -0
- package/dist/gateway/server-methods/sessions.js +382 -0
- package/dist/gateway/server-methods/skills.js +83 -0
- package/dist/gateway/server-methods/system.js +118 -0
- package/dist/gateway/server-methods/talk.js +22 -0
- package/dist/gateway/server-methods/types.js +1 -0
- package/dist/gateway/server-methods/voicewake.js +30 -0
- package/dist/gateway/server-methods/web.js +81 -0
- package/dist/gateway/server-methods/wizard.js +100 -0
- package/dist/gateway/server-methods.js +53 -0
- package/dist/gateway/server-providers.js +687 -0
- package/dist/gateway/server-shared.js +1 -0
- package/dist/gateway/server-utils.js +35 -0
- package/dist/gateway/server.js +1478 -0
- package/dist/gateway/session-utils.js +355 -0
- package/dist/gateway/ws-log.js +343 -0
- package/dist/gateway/ws-logging.js +8 -0
- package/dist/globals.js +41 -0
- package/dist/hooks/gmail-ops.js +236 -0
- package/dist/hooks/gmail-setup-utils.js +278 -0
- package/dist/hooks/gmail-watcher.js +190 -0
- package/dist/hooks/gmail.js +177 -0
- package/dist/imessage/client.js +165 -0
- package/dist/imessage/index.js +3 -0
- package/dist/imessage/monitor.js +365 -0
- package/dist/imessage/probe.js +26 -0
- package/dist/imessage/send.js +83 -0
- package/dist/imessage/targets.js +176 -0
- package/dist/index.js +55 -0
- package/dist/infra/agent-events.js +46 -0
- package/dist/infra/binaries.js +9 -0
- package/dist/infra/bonjour-discovery.js +163 -0
- package/dist/infra/bonjour.js +200 -0
- package/dist/infra/bridge/server.js +564 -0
- package/dist/infra/canvas-host-url.js +54 -0
- package/dist/infra/channel-summary.js +78 -0
- package/dist/infra/control-ui-assets.js +112 -0
- package/dist/infra/dotenv.js +15 -0
- package/dist/infra/env.js +8 -0
- package/dist/infra/errors.js +28 -0
- package/dist/infra/event-log.js +251 -0
- package/dist/infra/gateway-lock.js +8 -0
- package/dist/infra/git-commit.js +91 -0
- package/dist/infra/heartbeat-events.js +21 -0
- package/dist/infra/heartbeat-runner.js +458 -0
- package/dist/infra/heartbeat-wake.js +61 -0
- package/dist/infra/is-main.js +37 -0
- package/dist/infra/json-file.js +21 -0
- package/dist/infra/machine-name.js +40 -0
- package/dist/infra/nexus-root.js +56 -0
- package/dist/infra/node-pairing.js +212 -0
- package/dist/infra/path-env.js +93 -0
- package/dist/infra/ports.js +87 -0
- package/dist/infra/provider-summary.js +80 -0
- package/dist/infra/provider-usage.auth.js +189 -0
- package/dist/infra/provider-usage.fetch.claude.js +129 -0
- package/dist/infra/provider-usage.fetch.codex.js +62 -0
- package/dist/infra/provider-usage.fetch.copilot.js +42 -0
- package/dist/infra/provider-usage.fetch.gemini.js +57 -0
- package/dist/infra/provider-usage.fetch.js +6 -0
- package/dist/infra/provider-usage.fetch.minimax.js +214 -0
- package/dist/infra/provider-usage.fetch.shared.js +11 -0
- package/dist/infra/provider-usage.fetch.zai.js +62 -0
- package/dist/infra/provider-usage.format.js +77 -0
- package/dist/infra/provider-usage.js +145 -0
- package/dist/infra/provider-usage.load.js +54 -0
- package/dist/infra/provider-usage.shared.js +19 -0
- package/dist/infra/provider-usage.types.js +1 -0
- package/dist/infra/restart.js +29 -0
- package/dist/infra/retry.js +16 -0
- package/dist/infra/runtime-guard.js +59 -0
- package/dist/infra/shell-env.js +88 -0
- package/dist/infra/system-events.js +71 -0
- package/dist/infra/system-presence.js +217 -0
- package/dist/infra/tailnet.js +46 -0
- package/dist/infra/tailscale.js +149 -0
- package/dist/infra/unhandled-rejections.js +19 -0
- package/dist/infra/usage-suggestions.js +241 -0
- package/dist/infra/usage-upload.js +290 -0
- package/dist/infra/voicewake.js +78 -0
- package/dist/infra/widearea-dns.js +123 -0
- package/dist/infra/ws.js +13 -0
- package/dist/logger.js +52 -0
- package/dist/logging.js +506 -0
- package/dist/macos/gateway-daemon.js +145 -0
- package/dist/macos/relay.js +49 -0
- package/dist/media/constants.js +33 -0
- package/dist/media/host.js +42 -0
- package/dist/media/image-ops.js +119 -0
- package/dist/media/mime.js +123 -0
- package/dist/media/parse.js +83 -0
- package/dist/media/server.js +64 -0
- package/dist/media/store.js +139 -0
- package/dist/polls.js +43 -0
- package/dist/process/command-queue.js +97 -0
- package/dist/process/exec.js +75 -0
- package/dist/provider-web.js +8 -0
- package/dist/providers/github-copilot-auth.js +123 -0
- package/dist/providers/github-copilot-models.js +35 -0
- package/dist/providers/github-copilot-token.js +11 -0
- package/dist/providers/location.js +48 -0
- package/dist/providers/web/index.js +2 -0
- package/dist/runtime.js +8 -0
- package/dist/sessions/level-overrides.js +9 -0
- package/dist/sessions/send-policy.js +68 -0
- package/dist/signal/client.js +134 -0
- package/dist/signal/daemon.js +69 -0
- package/dist/signal/index.js +3 -0
- package/dist/signal/monitor.js +411 -0
- package/dist/signal/probe.js +46 -0
- package/dist/signal/send.js +91 -0
- package/dist/slack/actions.js +97 -0
- package/dist/slack/index.js +5 -0
- package/dist/slack/monitor.js +1270 -0
- package/dist/slack/probe.js +47 -0
- package/dist/slack/send.js +131 -0
- package/dist/slack/token.js +10 -0
- package/dist/telegram/allowed-updates.js +8 -0
- package/dist/telegram/bot.js +724 -0
- package/dist/telegram/download.js +34 -0
- package/dist/telegram/index.js +4 -0
- package/dist/telegram/monitor.js +47 -0
- package/dist/telegram/pairing-store.js +77 -0
- package/dist/telegram/probe.js +63 -0
- package/dist/telegram/proxy.js +9 -0
- package/dist/telegram/reaction-level.js +45 -0
- package/dist/telegram/send.js +151 -0
- package/dist/telegram/sent-message-cache.js +65 -0
- package/dist/telegram/token.js +30 -0
- package/dist/telegram/update-offset-store.js +61 -0
- package/dist/telegram/webhook-set.js +12 -0
- package/dist/telegram/webhook.js +56 -0
- package/dist/tui/commands.js +87 -0
- package/dist/tui/components/assistant-message.js +16 -0
- package/dist/tui/components/chat-log.js +92 -0
- package/dist/tui/components/custom-editor.js +55 -0
- package/dist/tui/components/selectors.js +8 -0
- package/dist/tui/components/tool-execution.js +111 -0
- package/dist/tui/components/user-message.js +17 -0
- package/dist/tui/gateway-chat.js +140 -0
- package/dist/tui/theme/theme.js +80 -0
- package/dist/tui/tui.js +708 -0
- package/dist/utils.js +153 -0
- package/dist/version.js +18 -0
- package/dist/web/accounts.js +86 -0
- package/dist/web/active-listener.js +25 -0
- package/dist/web/auto-reply.js +1256 -0
- package/dist/web/inbound.js +649 -0
- package/dist/web/login-qr.js +230 -0
- package/dist/web/login.js +71 -0
- package/dist/web/media.js +175 -0
- package/dist/web/outbound.js +102 -0
- package/dist/web/qr-image.js +97 -0
- package/dist/web/reconnect.js +60 -0
- package/dist/web/session.js +370 -0
- package/dist/wizard/clack-prompter.js +56 -0
- package/dist/wizard/onboarding.js +620 -0
- package/dist/wizard/prompts.js +6 -0
- package/dist/wizard/session.js +203 -0
- package/docs/AGENTS.default.md +116 -0
- package/docs/CAPABILITIES.md +444 -0
- package/docs/CNAME +1 -0
- package/docs/NEXUS_CORE_REWRITE_SPEC.md +226 -0
- package/docs/RELEASING.md +69 -0
- package/docs/_config.yml +53 -0
- package/docs/_layouts/default.html +145 -0
- package/docs/agent-assisted-install.md +95 -0
- package/docs/agent-loop.md +61 -0
- package/docs/agent-send.md +21 -0
- package/docs/agent.md +108 -0
- package/docs/android.md +133 -0
- package/docs/architecture.md +114 -0
- package/docs/assets/markdown.css +133 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/terminal.css +470 -0
- package/docs/assets/theme.js +55 -0
- package/docs/audio.md +48 -0
- package/docs/automation/nexus-sync.md +371 -0
- package/docs/background-process.md +74 -0
- package/docs/bash.md +32 -0
- package/docs/bedrock.md +71 -0
- package/docs/bonjour.md +159 -0
- package/docs/browser-linux-troubleshooting.md +114 -0
- package/docs/browser.md +293 -0
- package/docs/bun.md +56 -0
- package/docs/camera.md +152 -0
- package/docs/clawd.md +212 -0
- package/docs/concepts/usage-tracking.md +29 -0
- package/docs/configuration.md +1666 -0
- package/docs/control-ui.md +83 -0
- package/docs/cron.md +385 -0
- package/docs/dashboard.md +17 -0
- package/docs/device-models.md +46 -0
- package/docs/discord.md +308 -0
- package/docs/discovery.md +112 -0
- package/docs/docker.md +258 -0
- package/docs/docs.json +105 -0
- package/docs/doctor.md +68 -0
- package/docs/elevated.md +31 -0
- package/docs/faq.md +736 -0
- package/docs/feature-inventory/overview.md +141 -0
- package/docs/feature-inventory/rollout-checklist.md +53 -0
- package/docs/feature-inventory/test-matrix.md +87 -0
- package/docs/feature-inventory.md +9 -0
- package/docs/gateway/configuration-examples.md +221 -0
- package/docs/gateway/configuration.md +172 -0
- package/docs/gateway/cron.md +61 -0
- package/docs/gateway/heartbeat.md +207 -0
- package/docs/gateway/pairing.md +109 -0
- package/docs/gateway-lock.md +28 -0
- package/docs/gateway.md +227 -0
- package/docs/gmail-pubsub.md +191 -0
- package/docs/grammy.md +27 -0
- package/docs/group-messages.md +73 -0
- package/docs/groups.md +130 -0
- package/docs/health.md +28 -0
- package/docs/heartbeat.md +73 -0
- package/docs/home-userspace.md +277 -0
- package/docs/hubs.md +148 -0
- package/docs/images.md +51 -0
- package/docs/imessage.md +94 -0
- package/docs/index.md +196 -0
- package/docs/ios.md +372 -0
- package/docs/linux.md +11 -0
- package/docs/location-command.md +95 -0
- package/docs/location.md +46 -0
- package/docs/logging.md +110 -0
- package/docs/lore.md +131 -0
- package/docs/mac/bun.md +133 -0
- package/docs/mac/canvas.md +161 -0
- package/docs/mac/child-process.md +72 -0
- package/docs/mac/dev-setup.md +81 -0
- package/docs/mac/health.md +28 -0
- package/docs/mac/icon.md +26 -0
- package/docs/mac/logging.md +51 -0
- package/docs/mac/menu-bar.md +69 -0
- package/docs/mac/peekaboo.md +170 -0
- package/docs/mac/permissions.md +40 -0
- package/docs/mac/release.md +76 -0
- package/docs/mac/remote.md +57 -0
- package/docs/mac/signing.md +41 -0
- package/docs/mac/skills.md +27 -0
- package/docs/mac/voice-overlay.md +52 -0
- package/docs/mac/voicewake.md +56 -0
- package/docs/mac/webchat.md +27 -0
- package/docs/mac/xpc.md +40 -0
- package/docs/macos.md +104 -0
- package/docs/model-failover.md +75 -0
- package/docs/models.md +91 -0
- package/docs/multi-agent.md +74 -0
- package/docs/nix.md +95 -0
- package/docs/nodes.md +157 -0
- package/docs/onboarding-config-protocol.md +34 -0
- package/docs/onboarding.md +189 -0
- package/docs/pairing.md +85 -0
- package/docs/plans/cron-add-hardening.md +72 -0
- package/docs/plans/group-policy-hardening.md +121 -0
- package/docs/poll.md +52 -0
- package/docs/prereqs.md +67 -0
- package/docs/presence.md +133 -0
- package/docs/proposals/model-config.md +147 -0
- package/docs/provider-routing.md +25 -0
- package/docs/queue.md +78 -0
- package/docs/reference/templates/AGENTS.md +164 -0
- package/docs/remote-gateway-readme.md +153 -0
- package/docs/remote.md +61 -0
- package/docs/research/memory.md +227 -0
- package/docs/rpc.md +35 -0
- package/docs/security.md +200 -0
- package/docs/session-ingestion.md +119 -0
- package/docs/session-tool.md +154 -0
- package/docs/session.md +85 -0
- package/docs/sessions.md +8 -0
- package/docs/setup.md +131 -0
- package/docs/showcase.md +37 -0
- package/docs/signal.md +122 -0
- package/docs/skills-config.md +58 -0
- package/docs/skills.md +153 -0
- package/docs/slack.md +221 -0
- package/docs/subagents.md +72 -0
- package/docs/tailscale.md +71 -0
- package/docs/talk.md +79 -0
- package/docs/telegram.md +96 -0
- package/docs/templates/AGENTS.md +286 -0
- package/docs/templates/BOOTSTRAP.md +35 -0
- package/docs/templates/IDENTITY.md +17 -0
- package/docs/templates/PROFILE.md +14 -0
- package/docs/templates/SOUL.md +41 -0
- package/docs/templates/TOOLS.md +41 -0
- package/docs/templates/USER.md +8 -0
- package/docs/test.md +43 -0
- package/docs/testing-onboarding-quickstart.md +76 -0
- package/docs/testing-philosophy.md +211 -0
- package/docs/thinking.md +46 -0
- package/docs/timezone.md +40 -0
- package/docs/tools.md +346 -0
- package/docs/troubleshooting.md +257 -0
- package/docs/tui.md +71 -0
- package/docs/typebox.md +42 -0
- package/docs/updating.md +138 -0
- package/docs/usage-cloud-aggregation-spec.md +133 -0
- package/docs/usage-suggestions-pipeline.md +126 -0
- package/docs/voicewake.md +61 -0
- package/docs/web.md +115 -0
- package/docs/webchat.md +34 -0
- package/docs/webhook.md +132 -0
- package/docs/whatsapp-clawd.jpg +0 -0
- package/docs/whatsapp.md +170 -0
- package/docs/windows.md +11 -0
- package/docs/wizard.md +167 -0
- package/package.json +209 -0
- package/skills/1password/SKILL.md +54 -0
- package/skills/1password/docs/setup.md +85 -0
- package/skills/1password/docs/troubleshooting.md +63 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/agent-browser/SKILL.md +450 -0
- package/skills/agent-browser/docs/browser-use-eval.md +95 -0
- package/skills/agent-browser/docs/first-tests.md +261 -0
- package/skills/agent-browser/docs/wordle-nyt-eval.js +32 -0
- package/skills/aix/SKILL.md +93 -0
- package/skills/aix/docs/embeddings.md +40 -0
- package/skills/aix/docs/setup.md +58 -0
- package/skills/aix/docs/troubleshooting.md +41 -0
- package/skills/aix/references/sql.md +48 -0
- package/skills/apple-notes/SKILL.md +50 -0
- package/skills/apple-reminders/SKILL.md +67 -0
- package/skills/bear-notes/SKILL.md +79 -0
- package/skills/bird/SKILL.md +32 -0
- package/skills/bird/docs/auth.md +31 -0
- package/skills/bird/docs/troubleshooting.md +31 -0
- package/skills/blogwatcher/SKILL.md +46 -0
- package/skills/blucli/SKILL.md +27 -0
- package/skills/brave-search/SKILL.md +36 -0
- package/skills/brave-search/docs/setup.md +40 -0
- package/skills/brave-search/docs/troubleshooting.md +37 -0
- package/skills/brave-search/docs/usage.md +28 -0
- package/skills/brave-search/scripts/content.mjs +53 -0
- package/skills/brave-search/scripts/search.mjs +79 -0
- package/skills/browser-use-agent-sdk/SKILL.md +90 -0
- package/skills/camsnap/SKILL.md +25 -0
- package/skills/clawdhub/SKILL.md +53 -0
- package/skills/coding-agent/SKILL.md +274 -0
- package/skills/comms/SKILL.md +249 -0
- package/skills/comms/docs/adapters.md +54 -0
- package/skills/comms/docs/setup.md +56 -0
- package/skills/comms/docs/troubleshooting.md +44 -0
- package/skills/comms/references/schema.md +49 -0
- package/skills/computer-use/SKILL.md +204 -0
- package/skills/computer-use/docs/open-interpreter.md +26 -0
- package/skills/computer-use/docs/peekaboo.md +26 -0
- package/skills/computer-use/docs/setup.md +47 -0
- package/skills/computer-use/docs/troubleshooting.md +33 -0
- package/skills/discord/SKILL.md +370 -0
- package/skills/eightctl/SKILL.md +29 -0
- package/skills/eve/SKILL.md +215 -0
- package/skills/eve/docs/dual-account.md +84 -0
- package/skills/eve/docs/intelligence.md +58 -0
- package/skills/eve/docs/setup.md +60 -0
- package/skills/eve/docs/troubleshooting.md +54 -0
- package/skills/eve/scripts/setup-dual-account.sh +125 -0
- package/skills/filesystem/SKILL.md +217 -0
- package/skills/food-order/SKILL.md +41 -0
- package/skills/gemini/SKILL.md +23 -0
- package/skills/gh/SKILL.md +22 -0
- package/skills/gh/docs/usage.md +41 -0
- package/skills/gifgrep/SKILL.md +47 -0
- package/skills/github/SKILL.md +26 -0
- package/skills/github/docs/setup.md +21 -0
- package/skills/github/docs/troubleshooting.md +24 -0
- package/skills/gog/SKILL.md +104 -0
- package/skills/gog/docs/portability.md +94 -0
- package/skills/gog/docs/setup.md +76 -0
- package/skills/gog/docs/troubleshooting.md +94 -0
- package/skills/gog/scripts/cdp/README.md +90 -0
- package/skills/gog/scripts/cdp/add_test_users.py +69 -0
- package/skills/gog/scripts/cdp/auth_add_accounts.py +209 -0
- package/skills/gog/scripts/cdp/auth_add_accounts_manual.py +206 -0
- package/skills/gog/scripts/cdp/create_oauth_client.py +165 -0
- package/skills/gog/scripts/cdp/launch_cdp_chrome.sh +58 -0
- package/skills/google-oauth/SKILL.md +94 -0
- package/skills/goplaces/SKILL.md +30 -0
- package/skills/imsg/SKILL.md +25 -0
- package/skills/json-render/SKILL.md +154 -0
- package/skills/json-render/assets/components/README.md +21 -0
- package/skills/json-render/assets/components/catalog.ts +78 -0
- package/skills/json-render/assets/components/registry.tsx +172 -0
- package/skills/json-render/assets/demo/App.css +397 -0
- package/skills/json-render/assets/demo/App.tsx +897 -0
- package/skills/json-render/assets/demo/README.md +22 -0
- package/skills/json-render/assets/demo/catalog.ts +78 -0
- package/skills/json-render/assets/demo/data/nexus-core.json +31 -0
- package/skills/json-render/assets/demo/index.css +27 -0
- package/skills/json-render/assets/demo/registry.tsx +150 -0
- package/skills/json-render/docs/nexus-state-demo.md +84 -0
- package/skills/json-render/docs/shadcn-preset.md +33 -0
- package/skills/json-render/scripts/create-vite-demo.sh +45 -0
- package/skills/json-render/scripts/llm-server/README.md +33 -0
- package/skills/json-render/scripts/llm-server/catalog.ts +78 -0
- package/skills/json-render/scripts/llm-server/package-lock.json +702 -0
- package/skills/json-render/scripts/llm-server/package.json +18 -0
- package/skills/json-render/scripts/llm-server/server.ts +285 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +91 -0
- package/skills/local-places/pyproject.toml +27 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +38 -0
- package/skills/model-usage/SKILL.md +45 -0
- package/skills/model-usage/references/codexbar-cli.md +28 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/nano-banana-pro/SKILL.md +30 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +169 -0
- package/skills/nano-pdf/SKILL.md +20 -0
- package/skills/nexus-cloud/SKILL.md +53 -0
- package/skills/nexus-cloud/docs/security.md +24 -0
- package/skills/nexus-cloud/docs/setup.md +51 -0
- package/skills/nexus-cloud/docs/troubleshooting.md +28 -0
- package/skills/notion/SKILL.md +156 -0
- package/skills/obsidian/SKILL.md +55 -0
- package/skills/onboarding/SKILL.md +515 -0
- package/skills/onboarding/docs/CAPABILITIES.md +444 -0
- package/skills/onboarding/docs/CAPABILITY_TAXONOMY.md +608 -0
- package/skills/onboarding/docs/CLI_GRAMMAR.md +797 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_CREDENTIALS.md +632 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_ONBOARDING.md +815 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_SKILLS.md +449 -0
- package/skills/onboarding/docs/DOCUMENTATION_OVERVIEW.md +290 -0
- package/skills/onboarding/docs/ENTITY_MODEL.md +582 -0
- package/skills/onboarding/docs/GOAL_STATE_ARCHITECTURE.md +395 -0
- package/skills/onboarding/docs/NEXUS_SYSTEM_OVERVIEW.md +476 -0
- package/skills/onboarding/docs/SKILLS_HUB_SPEC.md +477 -0
- package/skills/onboarding/docs/SKILLS_SPECIFICATION.md +947 -0
- package/skills/onboarding/docs/SKILL_GATEWAY_DESIGN.md +702 -0
- package/skills/onboarding/docs/SKILL_GATEWAY_PRD.md +278 -0
- package/skills/onboarding/docs/SKILL_INVENTORY.md +266 -0
- package/skills/onboarding/docs/STATE_ARCHITECTURE.md +547 -0
- package/skills/onboarding/docs/TROUBLESHOOTING.md +363 -0
- package/skills/onboarding/docs/USER_JOURNEY.md +797 -0
- package/skills/onboarding/docs/WOW_MOMENTS.md +232 -0
- package/skills/onboarding/docs/agent-apple-id.md +289 -0
- package/skills/onboarding/docs/skill-deep-dives/1password.md +367 -0
- package/skills/onboarding/docs/skill-deep-dives/TEMPLATE.md +197 -0
- package/skills/onboarding/docs/skill-deep-dives/aix.md +498 -0
- package/skills/onboarding/docs/skill-deep-dives/bird.md +357 -0
- package/skills/onboarding/docs/skill-deep-dives/brave-search.md +601 -0
- package/skills/onboarding/docs/skill-deep-dives/comms.md +607 -0
- package/skills/onboarding/docs/skill-deep-dives/computer-use.md +599 -0
- package/skills/onboarding/docs/skill-deep-dives/cron-and-heartbeat.md +576 -0
- package/skills/onboarding/docs/skill-deep-dives/eve.md +711 -0
- package/skills/onboarding/docs/skill-deep-dives/github.md +333 -0
- package/skills/onboarding/docs/skill-deep-dives/gog.md +640 -0
- package/skills/onboarding/docs/skill-deep-dives/homebrew-prereqs.md +785 -0
- package/skills/onboarding/docs/skill-deep-dives/nexus-cloud.md +689 -0
- package/skills/onboarding/docs/skill-deep-dives/qmd.md +742 -0
- package/skills/onboarding/docs/skill-deep-dives/telegram.md +379 -0
- package/skills/onboarding/docs/skill-deep-dives/wacli.md +399 -0
- package/skills/onboarding/docs/skill-deep-dives/weather.md +513 -0
- package/skills/onboarding/scripts/ralph/prd.json +215 -0
- package/skills/onboarding/scripts/ralph/progress.txt +99 -0
- package/skills/onboarding/scripts/ralph/prompt.md +87 -0
- package/skills/onboarding/scripts/ralph/ralph.log +84 -0
- package/skills/onboarding/scripts/ralph/ralph.sh +45 -0
- package/skills/onboarding/scripts/setup-cursor-skills.sh +40 -0
- package/skills/openai-image-gen/SKILL.md +31 -0
- package/skills/openai-image-gen/scripts/gen.py +173 -0
- package/skills/openai-whisper/SKILL.md +19 -0
- package/skills/openai-whisper-api/SKILL.md +43 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +30 -0
- package/skills/oracle/SKILL.md +105 -0
- package/skills/ordercli/SKILL.md +47 -0
- package/skills/peekaboo/SKILL.md +153 -0
- package/skills/qmd/SKILL.md +32 -0
- package/skills/qmd/docs/mcp.md +30 -0
- package/skills/qmd/docs/ollama.md +42 -0
- package/skills/qmd/docs/setup.md +44 -0
- package/skills/sag/SKILL.md +62 -0
- package/skills/skill-cli-template/SKILL.md +109 -0
- package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-311.pyc +0 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +29 -0
- package/skills/sonoscli/SKILL.md +26 -0
- package/skills/spotify-player/SKILL.md +34 -0
- package/skills/summarize/SKILL.md +49 -0
- package/skills/telegram/SKILL.md +20 -0
- package/skills/telegram/docs/pairing.md +30 -0
- package/skills/telegram/docs/setup.md +41 -0
- package/skills/telegram/docs/webhook.md +17 -0
- package/skills/things-mac/SKILL.md +61 -0
- package/skills/tmux/SKILL.md +121 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +84 -0
- package/skills/upstream-sync/SKILL.md +151 -0
- package/skills/upstream-sync/scripts/auto-port.sh +227 -0
- package/skills/upstream-sync/scripts/check-all.sh +88 -0
- package/skills/upstream-sync/scripts/check-nexus.sh +146 -0
- package/skills/upstream-sync/scripts/check-pi-ai.sh +129 -0
- package/skills/video-frames/SKILL.md +29 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/wacli/SKILL.md +48 -0
- package/skills/wacli/docs/auth.md +21 -0
- package/skills/wacli/docs/backup.md +9 -0
- package/skills/wacli/docs/troubleshooting.md +21 -0
- package/skills/weather/SKILL.md +53 -0
- package/skills/weather/docs/usage.md +40 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How Nexus ingests session transcripts from NexusBot and Cursor (storage locations + adapter strategy)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want Nexus to index/review sessions across harnesses
|
|
5
|
+
- You are building a Cursor/NexusBot session adapter
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Session ingestion (NexusBot + Cursor → Nexus)
|
|
9
|
+
|
|
10
|
+
Nexus wants a **harness-agnostic session/thread registry** that can index “work that happened” regardless of where it was initiated.
|
|
11
|
+
|
|
12
|
+
This doc records where sessions live today for:
|
|
13
|
+
- NexusBot / Nexus gateway runs (**JSONL transcripts on disk**)
|
|
14
|
+
- Cursor agent chats (**JSON stored inside VSCode-style SQLite DBs**)
|
|
15
|
+
|
|
16
|
+
## Nexus/NexusBot gateway sessions (gateway-owned)
|
|
17
|
+
|
|
18
|
+
### Session directory structure (NEW FORMAT)
|
|
19
|
+
|
|
20
|
+
As of 2026-01, Nexus uses an **agent-grouped, per-session directory** format:
|
|
21
|
+
|
|
22
|
+
Canonical default:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
~/nexus/state/agents/<agentId>/sessions/<sessionKey>/
|
|
26
|
+
├── session.json # Metadata (created, updated, surface, model, etc.)
|
|
27
|
+
├── history.jsonl # Current active turns
|
|
28
|
+
├── archives/ # Compacted history files (preserved forever)
|
|
29
|
+
│ ├── 001.jsonl # Full history before 1st compaction
|
|
30
|
+
│ ├── 002.jsonl # Full history before 2nd compaction
|
|
31
|
+
│ └── ...
|
|
32
|
+
└── summary.md # Current context summary (post-compaction)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This format enables:
|
|
36
|
+
- Agent-grouped: All sessions for an agent live together
|
|
37
|
+
- Per-session isolation: Each session is self-contained
|
|
38
|
+
- Archive preservation: Searchable history even after compaction
|
|
39
|
+
- Cursor-style dynamic context discovery
|
|
40
|
+
|
|
41
|
+
### Legacy session formats (migration sources)
|
|
42
|
+
|
|
43
|
+
Old flat format (sessions.json + JSONL transcripts):
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
~/.nexus/agents/<agentId>/sessions/sessions.json
|
|
47
|
+
~/.nexus/agents/<agentId>/sessions/<sessionId>.jsonl
|
|
48
|
+
~/.nexus/sessions/<sessionId>.jsonl
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Migration from old format happens automatically on first access.
|
|
52
|
+
|
|
53
|
+
Notes:
|
|
54
|
+
- Transcript format can vary by runtime; some lines are `{ role, content, ... }`, some may be wrapped.
|
|
55
|
+
- When ingesting, prefer “be liberal”: parse each JSON line; if it has a `.message` field, unwrap it, otherwise treat the object as the message.
|
|
56
|
+
|
|
57
|
+
## Cursor sessions (IDE-owned)
|
|
58
|
+
|
|
59
|
+
Cursor (VSCode-based) persists AI chat state in SQLite DBs.
|
|
60
|
+
|
|
61
|
+
### Per-workspace DBs
|
|
62
|
+
|
|
63
|
+
Cursor stores one SQLite DB per workspace folder:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
~/Library/Application Support/Cursor/User/workspaceStorage/<hash>/state.vscdb
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`workspace.json` maps the `<hash>` folder back to the workspace path:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
~/Library/Application Support/Cursor/User/workspaceStorage/<hash>/workspace.json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Example:
|
|
76
|
+
- `workspace.json` contains `{"folder":"file:///Users/tyler/Desktop/projects"}`
|
|
77
|
+
|
|
78
|
+
### Where the actual AI Chat transcript lives
|
|
79
|
+
|
|
80
|
+
In the per-workspace `state.vscdb`, the full “AI Chat” data is stored as JSON text under:
|
|
81
|
+
|
|
82
|
+
- `ItemTable.key = "workbench.panel.aichat.view.aichat.chatdata"`
|
|
83
|
+
|
|
84
|
+
That JSON includes:
|
|
85
|
+
- `tabs[]` with:
|
|
86
|
+
- `tabId`
|
|
87
|
+
- `chatTitle`
|
|
88
|
+
- `bubbles[]` (messages + context selections)
|
|
89
|
+
|
|
90
|
+
Bubble notes (observed):
|
|
91
|
+
- User bubbles: `type: "user"`, `messageType: 2`
|
|
92
|
+
- content often lives in `initText` / `richText` (Lexical JSON), not `rawText`
|
|
93
|
+
- Assistant bubbles: `type: "assistant"`, `messageType: 3`
|
|
94
|
+
- content lives in `text` / `rawText`
|
|
95
|
+
|
|
96
|
+
Related (useful but not required for ingestion):
|
|
97
|
+
- `ItemTable.key = "aiService.prompts"`
|
|
98
|
+
- `ItemTable.key = "aiService.generations"`
|
|
99
|
+
|
|
100
|
+
## Adapter strategy (90% equivalent quickly)
|
|
101
|
+
|
|
102
|
+
### Goal
|
|
103
|
+
|
|
104
|
+
Build an adapter that:
|
|
105
|
+
- Scans NexusBot transcripts from state dir
|
|
106
|
+
- Extracts Cursor transcripts from `state.vscdb`
|
|
107
|
+
- Writes a Nexus-owned index so sessions are searchable/reviewable
|
|
108
|
+
|
|
109
|
+
### Minimal output
|
|
110
|
+
|
|
111
|
+
- `index.json` (a lightweight catalog)
|
|
112
|
+
- Cursor tabs exported as JSONL for easy reading/search
|
|
113
|
+
- NexusBot sessions referenced by path (optionally copied)
|
|
114
|
+
|
|
115
|
+
## Implementation
|
|
116
|
+
|
|
117
|
+
See `nexus sessions-ingest --help` (Nexus fork) once implemented.
|
|
118
|
+
|
|
119
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Agent session tools for listing sessions, fetching history, and sending cross-session messages"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying session tools
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Session Tools
|
|
8
|
+
|
|
9
|
+
Goal: small, hard-to-misuse tool set so agents can list sessions, fetch history, and send to another session.
|
|
10
|
+
|
|
11
|
+
## Tool Names
|
|
12
|
+
- `sessions_list`
|
|
13
|
+
- `sessions_history`
|
|
14
|
+
- `sessions_send`
|
|
15
|
+
- `sessions_spawn`
|
|
16
|
+
|
|
17
|
+
## Key Model
|
|
18
|
+
- Main direct chat bucket is always the literal key `"main"`.
|
|
19
|
+
- Group chats use `<provider>:group:<id>` or `<provider>:channel:<id>`.
|
|
20
|
+
- Cron jobs use `cron:<job.id>`.
|
|
21
|
+
- Hooks use `hook:<uuid>` unless explicitly set.
|
|
22
|
+
- Node bridge uses `node-<nodeId>` unless explicitly set.
|
|
23
|
+
|
|
24
|
+
`global` and `unknown` are internal-only and never listed. If `session.scope = "global"`, we alias it to `main` for all tools so callers never see `global`.
|
|
25
|
+
|
|
26
|
+
## sessions_list
|
|
27
|
+
List sessions as an array of rows.
|
|
28
|
+
|
|
29
|
+
Parameters:
|
|
30
|
+
- `kinds?: string[]` filter: any of `"main" | "group" | "cron" | "hook" | "node" | "other"`
|
|
31
|
+
- `limit?: number` max rows (default: server default, clamp e.g. 200)
|
|
32
|
+
- `activeMinutes?: number` only sessions updated within N minutes
|
|
33
|
+
- `messageLimit?: number` 0 = no messages (default 0); >0 = include last N messages
|
|
34
|
+
|
|
35
|
+
Behavior:
|
|
36
|
+
- `messageLimit > 0` fetches `chat.history` per session and includes the last N messages.
|
|
37
|
+
- Tool results are filtered out in list output; use `sessions_history` for tool messages.
|
|
38
|
+
- When running in a **sandboxed** agent session, session tools default to **spawned-only visibility** (see below).
|
|
39
|
+
|
|
40
|
+
Row shape (JSON):
|
|
41
|
+
- `key`: session key (string)
|
|
42
|
+
- `kind`: `main | group | cron | hook | node | other`
|
|
43
|
+
- `provider`: `whatsapp | telegram | discord | signal | imessage | webchat | internal | unknown`
|
|
44
|
+
- `displayName` (group display label if available)
|
|
45
|
+
- `updatedAt` (ms)
|
|
46
|
+
- `sessionId`
|
|
47
|
+
- `model`, `contextTokens`, `totalTokens`
|
|
48
|
+
- `thinkingLevel`, `verboseLevel`, `systemSent`, `abortedLastRun`
|
|
49
|
+
- `sendPolicy` (session override if set)
|
|
50
|
+
- `lastProvider`, `lastTo`
|
|
51
|
+
- `transcriptPath` (best-effort path derived from store dir + sessionId)
|
|
52
|
+
- `messages?` (only when `messageLimit > 0`)
|
|
53
|
+
|
|
54
|
+
## sessions_history
|
|
55
|
+
Fetch transcript for one session.
|
|
56
|
+
|
|
57
|
+
Parameters:
|
|
58
|
+
- `sessionKey` (required)
|
|
59
|
+
- `limit?: number` max messages (server clamps)
|
|
60
|
+
- `includeTools?: boolean` (default false)
|
|
61
|
+
|
|
62
|
+
Behavior:
|
|
63
|
+
- `includeTools=false` filters `role: "toolResult"` messages.
|
|
64
|
+
- Returns messages array in the raw transcript format.
|
|
65
|
+
|
|
66
|
+
## sessions_send
|
|
67
|
+
Send a message into another session.
|
|
68
|
+
|
|
69
|
+
Parameters:
|
|
70
|
+
- `sessionKey` (required)
|
|
71
|
+
- `message` (required)
|
|
72
|
+
- `timeoutSeconds?: number` (default >0; 0 = fire-and-forget)
|
|
73
|
+
|
|
74
|
+
Behavior:
|
|
75
|
+
- `timeoutSeconds = 0`: enqueue and return `{ runId, status: "accepted" }`.
|
|
76
|
+
- `timeoutSeconds > 0`: wait up to N seconds for completion, then return `{ runId, status: "ok", reply }`.
|
|
77
|
+
- If wait times out: `{ runId, status: "timeout", error }`. Run continues; call `sessions_history` later.
|
|
78
|
+
- If the run fails: `{ runId, status: "error", error }`.
|
|
79
|
+
- Waits via gateway `agent.wait` (server-side) so reconnects don't drop the wait.
|
|
80
|
+
- Agent-to-agent message context is injected for the primary run.
|
|
81
|
+
- After the primary run completes, Nexus runs a **reply-back loop**:
|
|
82
|
+
- Round 2+ alternates between requester and target agents.
|
|
83
|
+
- Reply exactly `REPLY_SKIP` to stop the ping‑pong.
|
|
84
|
+
- Max turns is `session.agentToAgent.maxPingPongTurns` (0–5, default 5).
|
|
85
|
+
- Once the loop ends, Nexus runs the **agent‑to‑agent announce step** (target agent only):
|
|
86
|
+
- Reply exactly `ANNOUNCE_SKIP` to stay silent.
|
|
87
|
+
- Any other reply is sent to the target provider.
|
|
88
|
+
- Announce step includes the original request + round‑1 reply + latest ping‑pong reply.
|
|
89
|
+
|
|
90
|
+
## Provider Field
|
|
91
|
+
- For groups, `provider` is the provider recorded on the session entry.
|
|
92
|
+
- For direct chats, `provider` maps from `lastProvider`.
|
|
93
|
+
- For cron/hook/node, `provider` is `internal`.
|
|
94
|
+
- If missing, `provider` is `unknown`.
|
|
95
|
+
|
|
96
|
+
## Security / Send Policy
|
|
97
|
+
Policy-based blocking by provider/chat type (not per session id).
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"session": {
|
|
102
|
+
"sendPolicy": {
|
|
103
|
+
"rules": [
|
|
104
|
+
{
|
|
105
|
+
"match": { "provider": "discord", "chatType": "group" },
|
|
106
|
+
"action": "deny"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"default": "allow"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Runtime override (per session entry):
|
|
116
|
+
- `sendPolicy: "allow" | "deny"` (unset = inherit config)
|
|
117
|
+
- Settable via `sessions.patch` or owner-only `/send on|off|inherit`.
|
|
118
|
+
|
|
119
|
+
Enforcement points:
|
|
120
|
+
- `chat.send` / `agent` (gateway)
|
|
121
|
+
- auto-reply delivery logic
|
|
122
|
+
|
|
123
|
+
## sessions_spawn
|
|
124
|
+
Spawn a sub-agent run in an isolated session and announce the result back to the requester chat provider.
|
|
125
|
+
|
|
126
|
+
Parameters:
|
|
127
|
+
- `task` (required)
|
|
128
|
+
- `label?` (optional; used for logs/UI)
|
|
129
|
+
- `timeoutSeconds?` (default 0; 0 = fire-and-forget)
|
|
130
|
+
- `cleanup?` (`delete|keep`, default `delete`)
|
|
131
|
+
|
|
132
|
+
Behavior:
|
|
133
|
+
- Starts a new `subagent:<uuid>` session with `deliver: false`.
|
|
134
|
+
- Sub-agents default to the full tool set **minus session tools** (configurable via `agent.subagents.tools`).
|
|
135
|
+
- Sub-agents are not allowed to call `sessions_spawn` (no sub-agent → sub-agent spawning).
|
|
136
|
+
- After completion (or best-effort wait), Nexus runs a sub-agent **announce step** and posts the result to the requester chat provider.
|
|
137
|
+
- Reply exactly `ANNOUNCE_SKIP` during the announce step to stay silent.
|
|
138
|
+
|
|
139
|
+
## Sandbox Session Visibility
|
|
140
|
+
|
|
141
|
+
Sandboxed sessions can use session tools, but by default they only see sessions they spawned via `sessions_spawn`.
|
|
142
|
+
|
|
143
|
+
Config:
|
|
144
|
+
|
|
145
|
+
```json5
|
|
146
|
+
{
|
|
147
|
+
agent: {
|
|
148
|
+
sandbox: {
|
|
149
|
+
// default: "spawned"
|
|
150
|
+
sessionToolsVisibility: "spawned" // or "all"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
package/docs/session.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Session management rules, keys, and persistence for chats"
|
|
3
|
+
read_when:
|
|
4
|
+
- Modifying session handling or storage
|
|
5
|
+
---
|
|
6
|
+
# Session Management
|
|
7
|
+
|
|
8
|
+
Nexus treats **one direct-chat session per agent** as primary. Direct chats collapse to `agent:<agentId>:<mainKey>` (default `main`), while group/channel chats get their own keys. `session.mainKey` is honored.
|
|
9
|
+
|
|
10
|
+
## Gateway is the source of truth
|
|
11
|
+
All session state is **owned by the gateway** (the “master” Nexus). UI clients (macOS app, WebChat, etc.) must query the gateway for session lists and token counts instead of reading local files.
|
|
12
|
+
|
|
13
|
+
- In **remote mode**, the session store you care about lives on the remote gateway host, not your Mac.
|
|
14
|
+
- Token counts shown in UIs come from the gateway’s store fields (`inputTokens`, `outputTokens`, `totalTokens`, `contextTokens`). Clients do not parse JSONL transcripts to “fix up” totals.
|
|
15
|
+
|
|
16
|
+
## Where state lives
|
|
17
|
+
- On the **gateway host**:
|
|
18
|
+
- Store file: `~/nexus/state/agents/<agentId>/sessions/sessions.json` (per agent).
|
|
19
|
+
- Transcripts: `~/nexus/state/agents/<agentId>/sessions/<SessionId>.jsonl` (one file per session id).
|
|
20
|
+
- The store is a map `sessionKey -> { sessionId, updatedAt, ... }`. Deleting entries is safe; they are recreated on demand.
|
|
21
|
+
- Group entries may include `displayName`, `provider`, `subject`, `room`, and `space` to label sessions in UIs.
|
|
22
|
+
- Nexus does **not** read legacy Pi/Tau session folders.
|
|
23
|
+
|
|
24
|
+
## Mapping transports → session keys
|
|
25
|
+
- Direct chats collapse to the per-agent primary key: `agent:<agentId>:<mainKey>`.
|
|
26
|
+
- Multiple phone numbers and providers can map to the same agent main key; they act as transports into one conversation.
|
|
27
|
+
- Group chats isolate state: `agent:<agentId>:<provider>:group:<id>` (rooms/channels use `agent:<agentId>:<provider>:channel:<id>`).
|
|
28
|
+
- Legacy `group:<id>` keys are still recognized for migration.
|
|
29
|
+
- Other sources:
|
|
30
|
+
- Cron jobs: `cron:<job.id>`
|
|
31
|
+
- Webhooks: `hook:<uuid>` (unless explicitly set by the hook)
|
|
32
|
+
- Node bridge runs: `node-<nodeId>`
|
|
33
|
+
|
|
34
|
+
## Lifecyle
|
|
35
|
+
- Idle expiry: `session.idleMinutes` (default 60). After the timeout a new `sessionId` is minted on the next message.
|
|
36
|
+
- Reset triggers: exact `/new` or `/reset` (plus any extras in `resetTriggers`) start a fresh session id and pass the remainder of the message through. If `/new` or `/reset` is sent alone, Nexus runs a short “hello” greeting turn to confirm the reset.
|
|
37
|
+
- Manual reset: delete specific keys from the store or remove the JSONL transcript; the next message recreates them.
|
|
38
|
+
|
|
39
|
+
## Send policy (optional)
|
|
40
|
+
Block delivery for specific session types without listing individual ids.
|
|
41
|
+
|
|
42
|
+
```json5
|
|
43
|
+
{
|
|
44
|
+
session: {
|
|
45
|
+
sendPolicy: {
|
|
46
|
+
rules: [
|
|
47
|
+
{ action: "deny", match: { provider: "discord", chatType: "group" } },
|
|
48
|
+
{ action: "deny", match: { keyPrefix: "cron:" } }
|
|
49
|
+
],
|
|
50
|
+
default: "allow"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Runtime override (owner only):
|
|
57
|
+
- `/send on` → allow for this session
|
|
58
|
+
- `/send off` → deny for this session
|
|
59
|
+
- `/send inherit` → clear override and use config rules
|
|
60
|
+
|
|
61
|
+
## Configuration (optional rename example)
|
|
62
|
+
```json5
|
|
63
|
+
// ~/nexus/state/nexus.json
|
|
64
|
+
{
|
|
65
|
+
session: {
|
|
66
|
+
scope: "per-sender", // keep group keys separate
|
|
67
|
+
idleMinutes: 120,
|
|
68
|
+
resetTriggers: ["/new", "/reset"],
|
|
69
|
+
store: "~/nexus/state/agents/{agentId}/sessions/sessions.json",
|
|
70
|
+
mainKey: "main",
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Inspecting
|
|
76
|
+
- `pnpm nexus status` — shows store path and recent sessions.
|
|
77
|
+
- `pnpm nexus sessions --json` — dumps every entry (filter with `--active <minutes>`).
|
|
78
|
+
- `pnpm nexus gateway call sessions.list --params '{}'` — fetch sessions from the running gateway (use `--url`/`--token` for remote gateway access).
|
|
79
|
+
- Send `/status` in chat to see whether the agent is reachable, how much of the session context is used, current thinking/verbose toggles, and when your WhatsApp web creds were last refreshed (helps spot relink needs).
|
|
80
|
+
- Send `/compact` (optional instructions) to summarize older context and free up window space.
|
|
81
|
+
- JSONL transcripts can be opened directly to review full turns.
|
|
82
|
+
|
|
83
|
+
## Tips
|
|
84
|
+
- Keep the primary key dedicated to 1:1 traffic; let groups keep their own keys.
|
|
85
|
+
- When automating cleanup, delete individual keys instead of the whole store to preserve context elsewhere.
|
package/docs/sessions.md
ADDED
package/docs/setup.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Setup guide: keep your Nexus setup tailored while staying up-to-date"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up a new machine
|
|
5
|
+
- You want “latest + greatest” without breaking your personal setup
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Setup
|
|
9
|
+
|
|
10
|
+
Last updated: 2026-01-01
|
|
11
|
+
|
|
12
|
+
## TL;DR
|
|
13
|
+
- **Tailoring lives outside the repo:** `~/nexus` (workspace) + `~/nexus/state/nexus.json` (config).
|
|
14
|
+
- **Stable workflow:** install the macOS app; let it run the bundled Gateway.
|
|
15
|
+
- **Bleeding edge workflow:** run the Gateway yourself via `pnpm gateway:watch`, then point the macOS app at it using **Debug Settings → Gateway → Attach only**.
|
|
16
|
+
|
|
17
|
+
## Prereqs (from source)
|
|
18
|
+
- Node `>=22`
|
|
19
|
+
- `pnpm`
|
|
20
|
+
- Docker (optional; only for containerized setup/e2e — see [`docs/docker.md`](https://docs.nexus.bot/docker))
|
|
21
|
+
|
|
22
|
+
## Tailoring strategy (so updates don’t hurt)
|
|
23
|
+
|
|
24
|
+
If you want “100% tailored to me” *and* easy updates, keep your customization in:
|
|
25
|
+
|
|
26
|
+
- **Config:** `~/nexus/state/nexus.json` (JSON/JSON5-ish)
|
|
27
|
+
- **Workspace:** `~/nexus` (skills, prompts, memories; make it a private git repo)
|
|
28
|
+
|
|
29
|
+
Bootstrap once:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
nexus setup
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
From inside this repo, use the local CLI entry:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pnpm nexus setup
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Stable workflow (macOS app first)
|
|
42
|
+
|
|
43
|
+
1) Install + launch **Nexus.app** (menu bar).
|
|
44
|
+
2) Complete the onboarding/permissions checklist (TCC prompts).
|
|
45
|
+
3) Ensure Gateway is **Local** and running (the app manages it).
|
|
46
|
+
4) Link surfaces (example: WhatsApp):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
nexus login
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
5) Sanity check:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
nexus health
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If onboarding is still WIP/broken on your build:
|
|
59
|
+
- Run `nexus setup`, then `nexus login`, then start the Gateway manually (`nexus gateway`).
|
|
60
|
+
|
|
61
|
+
## Bleeding edge workflow (Gateway in a terminal)
|
|
62
|
+
|
|
63
|
+
Goal: work on the TypeScript Gateway, get hot reload, keep the macOS app UI attached.
|
|
64
|
+
|
|
65
|
+
### 0) (Optional) Run the macOS app from source too
|
|
66
|
+
|
|
67
|
+
If you also want the macOS app on the bleeding edge:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
./scripts/restart-mac.sh
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 1) Start the dev Gateway
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pnpm install
|
|
77
|
+
pnpm gateway:watch
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`gateway:watch` runs `src/index.ts gateway --force` and reloads on `src/**/*.ts` changes.
|
|
81
|
+
|
|
82
|
+
### 2) Point the macOS app at your running Gateway
|
|
83
|
+
|
|
84
|
+
In **Nexus.app**:
|
|
85
|
+
|
|
86
|
+
- Connection Mode: **Local**
|
|
87
|
+
- Settings → **Debug Settings** → **Gateway** → enable **Attach only**
|
|
88
|
+
|
|
89
|
+
This makes the app **only connect to an already-running gateway** and **never spawn** its own.
|
|
90
|
+
|
|
91
|
+
### 3) Verify
|
|
92
|
+
|
|
93
|
+
- In-app Gateway status should read **“Using existing gateway …”**
|
|
94
|
+
- Or via CLI:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
pnpm nexus health
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Common footguns
|
|
101
|
+
- **Attach only enabled, but nothing is running:** app shows “Attach-only enabled; no gateway to attach”.
|
|
102
|
+
- **Wrong port:** Gateway WS defaults to `ws://127.0.0.1:18789`; keep app + CLI on the same port.
|
|
103
|
+
- **Where state lives:**
|
|
104
|
+
- Credentials: `~/nexus/state/credentials/`
|
|
105
|
+
- Sessions/logs: `~/nexus/state/sessions/`
|
|
106
|
+
|
|
107
|
+
## Updating (without wrecking your setup)
|
|
108
|
+
|
|
109
|
+
- Keep `~/nexus` and `~/nexus/state/` as “your stuff”; don’t put personal prompts/config into the `nexus` repo.
|
|
110
|
+
- Updating source: `git pull` + `pnpm install` (when lockfile changed) + keep using `pnpm gateway:watch`.
|
|
111
|
+
|
|
112
|
+
## Linux (systemd user service)
|
|
113
|
+
|
|
114
|
+
Linux installs use a systemd **user** service. By default, systemd stops user
|
|
115
|
+
services on logout/idle, which kills the Gateway. Onboarding attempts to enable
|
|
116
|
+
lingering for you (may prompt for sudo). If it’s still off, run:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
sudo loginctl enable-linger $USER
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For always-on or multi-user servers, consider a **system** service instead of a
|
|
123
|
+
user service (no lingering needed). See [`docs/gateway.md`](https://docs.nexus.bot/gateway) for the systemd notes.
|
|
124
|
+
|
|
125
|
+
## Related docs
|
|
126
|
+
|
|
127
|
+
- [`docs/gateway.md`](https://docs.nexus.bot/gateway) (Gateway runbook; flags, supervision, ports)
|
|
128
|
+
- [`docs/configuration.md`](https://docs.nexus.bot/configuration) (config schema + examples)
|
|
129
|
+
- [`docs/discord.md`](https://docs.nexus.bot/discord) and [`docs/telegram.md`](https://docs.nexus.bot/telegram) (reply tags + replyToMode settings)
|
|
130
|
+
- [`docs/nexus.md`](https://docs.nexus.bot/nexus) (personal assistant setup)
|
|
131
|
+
- [`docs/macos.md`](https://docs.nexus.bot/macos) (macOS app behavior; gateway lifecycle + “Attach only”)
|
package/docs/showcase.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Real-world showcases of what Nexus can do"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want inspiration or proof of capability
|
|
5
|
+
---
|
|
6
|
+
# Showcase
|
|
7
|
+
|
|
8
|
+
Real projects from the community. Highlights from #showcase (Jan 2–5, 2026).
|
|
9
|
+
|
|
10
|
+
## Automation & real-world outcomes
|
|
11
|
+
- **Visual morning briefing scene** — Scheduled prompt generates a single "scene" image each morning (weather, tasks, date, favorite post/quote) via a Nexus persona, delivered in Telegram. https://x.com/buddyhadry/status/2010005331925954739
|
|
12
|
+
- **Grocery autopilot (Picnic)** — Skill built around an unofficial Picnic API client. Pulls order history, infers preferred brands, maps recipes to cart, completes order in minutes. https://github.com/timkrase/nexus-picnic-skill
|
|
13
|
+
- **Grocery autopilot (Picnic, alt)** — Another Picnic-based skill built via the `picnic-api` package. https://github.com/MRVDH/picnic-api
|
|
14
|
+
- **German rail planning** — Go CLI for Deutsche Bahn; skill picks best connections given time windows and preferences. https://github.com/timkrase/dbrest-cli + https://github.com/timkrase/nexus-skills/tree/main/db-bahn
|
|
15
|
+
- **Accounting intake** — Collect PDFs from email, prep for tax consultant (monthly accounting batch). (No link shared.)
|
|
16
|
+
|
|
17
|
+
## Knowledge & memory systems
|
|
18
|
+
- **WhatsApp memory vault** — Ingests full exports, transcribes 1k+ voice notes, cross‑checks with git logs, outputs linked MD reports + ongoing indexing. (No link shared.)
|
|
19
|
+
- **Karakeep semantic search** — Sidecar adds vector search to Karakeep bookmarks (Qdrant + OpenAI/Ollama), includes Nexus skill. https://github.com/jamesbrooksco/karakeep-semantic-search
|
|
20
|
+
- **Inside‑Out‑2 style memory** — Separate memory manager app turns session files into memories → beliefs → self model. (No link shared.)
|
|
21
|
+
|
|
22
|
+
## Voice, docs, and assistants on the phone
|
|
23
|
+
- **Nexusia phone bridge** — Vapi voice assistant ↔ Nexus HTTP bridge; near‑real‑time phone calls. https://github.com/alejandroOPI/nexusia-bridge
|
|
24
|
+
- **Google Docs edit skill** — Rich‑text editing skill built fast with Claude Code. (No link shared.)
|
|
25
|
+
- **OpenRouter transcription skill** — Multi‑lingual audio transcription via OpenRouter (Gemini etc). NexusHub: https://nexushub.com/obviyus/openrouter-transcribe (user/slug link)
|
|
26
|
+
|
|
27
|
+
## Infrastructure & deployment
|
|
28
|
+
- **Home Assistant OS gateway add‑on** — Nexus gateway running on HA OS (Raspberry Pi), with SSH tunnel support + persistent state in /config. https://github.com/ngutman/nexus-ha-addon
|
|
29
|
+
- **Home Assistant skill** — Control/automate HA via NexusHub. https://nexushub.com/skills/homeassistant
|
|
30
|
+
- **Nix packaging** — Batteries‑included nixified nexus config. https://github.com/joshp123/nix-nexus
|
|
31
|
+
- **CalDAV skill** — khal/vdirsyncer based calendar skill. NexusHub: caldav-calendar → https://nexushub.com/skills/caldav-calendar
|
|
32
|
+
|
|
33
|
+
## Home + hardware
|
|
34
|
+
- **Roborock integration** — Plugin for robot vacuum control. https://github.com/joshp123/gohome/tree/main/plugins/roborock
|
|
35
|
+
|
|
36
|
+
## Community builds (non‑Nexus but made with/around it)
|
|
37
|
+
- **StarSwap marketplace** — Full astronomy gear marketplace. https://star-swap.com/
|
package/docs/signal.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Signal support via signal-cli (JSON-RPC + SSE), setup, and number model"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up Signal support
|
|
5
|
+
- Debugging Signal send/receive
|
|
6
|
+
---
|
|
7
|
+
# Signal (signal-cli)
|
|
8
|
+
|
|
9
|
+
Status: external CLI integration only. No libsignal embedding.
|
|
10
|
+
|
|
11
|
+
## Why
|
|
12
|
+
- Signal OSS stack is GPL/AGPL; not compatible with Nexus MIT if bundled.
|
|
13
|
+
- signal-cli is unofficial; must stay up to date (Signal server churn).
|
|
14
|
+
|
|
15
|
+
## The “number model” (important)
|
|
16
|
+
- Nexus is a **device** connected via `signal-cli`.
|
|
17
|
+
- If you run `signal-cli` on **your personal Signal account**, Nexus will **not** respond to messages sent from that same account (loop protection: ignore sender==account).
|
|
18
|
+
- Result: you **cannot** “text yourself” to chat with the AI.
|
|
19
|
+
- For “I text her, she texts me back” you want a **separate Signal account/number for the bot**:
|
|
20
|
+
- Bot number runs `signal-cli` (linked device)
|
|
21
|
+
- Your personal number is in `signal.allowFrom`
|
|
22
|
+
- You DM the bot number; Nexus replies back to you
|
|
23
|
+
|
|
24
|
+
You can still run Nexus on your own Signal account if your goal is “respond to other people as me”, but not for self-chat.
|
|
25
|
+
|
|
26
|
+
## Model
|
|
27
|
+
- Run `signal-cli` as separate process (user-installed).
|
|
28
|
+
- Prefer `daemon --http=127.0.0.1:PORT` for JSON-RPC + SSE.
|
|
29
|
+
- Alternative: `jsonRpc` mode over stdin/stdout.
|
|
30
|
+
|
|
31
|
+
## Quickstart (bot number)
|
|
32
|
+
1) Install `signal-cli` (keep Java installed).
|
|
33
|
+
- If you use the CLI wizard, it can auto-install to `~/nexus/state/tools/signal-cli/...`.
|
|
34
|
+
- If you want a pinned version (example: `v0.13.22`), install manually:
|
|
35
|
+
- Download the release asset for your platform from GitHub (tag `v0.13.22`).
|
|
36
|
+
- Extract it somewhere stable (example: `~/nexus/state/tools/signal-cli/0.13.22/`).
|
|
37
|
+
- Set `signal.cliPath` to the extracted `signal-cli` binary path.
|
|
38
|
+
2) Link the bot account as a device:
|
|
39
|
+
- Run: `signal-cli link -n "Nexus"`
|
|
40
|
+
- Scan QR in Signal: Settings → Linked Devices → Link New Device
|
|
41
|
+
- Verify: `signal-cli listAccounts` includes the bot E.164
|
|
42
|
+
3) Configure `~/nexus/state/nexus.json`:
|
|
43
|
+
```json5
|
|
44
|
+
{
|
|
45
|
+
signal: {
|
|
46
|
+
enabled: true,
|
|
47
|
+
account: "+15551234567", // bot number (recommended)
|
|
48
|
+
cliPath: "signal-cli",
|
|
49
|
+
autoStart: true,
|
|
50
|
+
httpHost: "127.0.0.1",
|
|
51
|
+
httpPort: 8080,
|
|
52
|
+
|
|
53
|
+
// Who is allowed to talk to the bot (DMs)
|
|
54
|
+
dmPolicy: "pairing", // pairing | allowlist | open | disabled
|
|
55
|
+
allowFrom: ["+15557654321"], // your personal number ("open" requires ["*"])
|
|
56
|
+
|
|
57
|
+
// Group policy + allowlist
|
|
58
|
+
groupPolicy: "open",
|
|
59
|
+
groupAllowFrom: ["+15557654321"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
4) Run gateway; sanity probe:
|
|
64
|
+
- `nexus gateway call providers.status --params '{"probe":true}'`
|
|
65
|
+
- Expect `signal.probe.ok=true` and `signal.probe.version`.
|
|
66
|
+
5) DM the bot number from your phone; Nexus replies.
|
|
67
|
+
|
|
68
|
+
## DM pairing
|
|
69
|
+
- Default: `signal.dmPolicy="pairing"` — unknown DM senders get a pairing code.
|
|
70
|
+
- Approve via: `nexus pairing approve --provider signal <code>`.
|
|
71
|
+
|
|
72
|
+
## “Do I need a separate number?”
|
|
73
|
+
- If you want “I text her and she texts me back”, yes: **use a separate Signal account/number for the bot**.
|
|
74
|
+
- Your personal account can run `signal-cli`, but you can’t self-chat (Signal loop protection; Nexus ignores sender==account).
|
|
75
|
+
|
|
76
|
+
If you have a second phone:
|
|
77
|
+
- Create/activate the bot number on that phone.
|
|
78
|
+
- Run `signal-cli link -n "Nexus"` on your Mac, scan the QR on the bot phone.
|
|
79
|
+
- Put your personal number in `signal.allowFrom`, then DM the bot number from your personal phone.
|
|
80
|
+
|
|
81
|
+
## Endpoints (daemon --http)
|
|
82
|
+
- `POST /api/v1/rpc` JSON-RPC request (single or batch).
|
|
83
|
+
- `GET /api/v1/events` SSE stream of `receive` notifications.
|
|
84
|
+
- `GET /api/v1/check` health probe (200 = up).
|
|
85
|
+
|
|
86
|
+
## Multi-account
|
|
87
|
+
- Start daemon without `-a`.
|
|
88
|
+
- Include `params.account` (E164) on JSON-RPC calls.
|
|
89
|
+
- SSE `?account=+E164` filters events; no param = all accounts.
|
|
90
|
+
|
|
91
|
+
## Troubleshooting
|
|
92
|
+
- Gateway log coloring: `signal-cli: ...` lines are classified by severity; red means “treat this as an error”.
|
|
93
|
+
- `Failed to initialize HTTP Server` typically means the daemon can’t bind the HTTP port (already in use). Stop the other daemon or change `signal.httpPort`.
|
|
94
|
+
|
|
95
|
+
## Minimal RPC surface
|
|
96
|
+
- `send` (recipient/groupId/username, message, attachments).
|
|
97
|
+
- `listGroups` (map group IDs).
|
|
98
|
+
- `subscribeReceive` / `unsubscribeReceive` (if manual receive).
|
|
99
|
+
- `startLink` / `finishLink` (optional device link flow).
|
|
100
|
+
|
|
101
|
+
## Addressing (send targets)
|
|
102
|
+
- Direct: `signal:+15551234567` (or plain `+15551234567`)
|
|
103
|
+
- Groups: `signal:group:<groupId>`
|
|
104
|
+
- Usernames: `username:<name>` / `u:<name>`
|
|
105
|
+
|
|
106
|
+
## Process plan (Nexus adapter)
|
|
107
|
+
1) Detect `signal-cli` binary; refuse if missing.
|
|
108
|
+
2) Launch daemon (HTTP preferred), store PID.
|
|
109
|
+
3) Poll `/api/v1/check` until ready.
|
|
110
|
+
4) Open SSE stream; parse `event: receive`.
|
|
111
|
+
5) Translate receive payload into Nexus provider model.
|
|
112
|
+
6) On SSE disconnect, backoff + reconnect.
|
|
113
|
+
|
|
114
|
+
## Storage
|
|
115
|
+
- signal-cli data lives in `$XDG_DATA_HOME/signal-cli/data` or
|
|
116
|
+
`$HOME/.local/share/signal-cli/data`.
|
|
117
|
+
|
|
118
|
+
## References (local)
|
|
119
|
+
- `~/Projects/oss/signal-cli/README.md`
|
|
120
|
+
- `~/Projects/oss/signal-cli/man/signal-cli-jsonrpc.5.adoc`
|
|
121
|
+
- `~/Projects/oss/signal-cli/src/main/java/org/asamk/signal/http/HttpServerHandler.java`
|
|
122
|
+
- `~/Projects/oss/signal-cli/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java`
|