@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,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Skills config schema and examples"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying skills config
|
|
5
|
+
- Adjusting bundled allowlist or install behavior
|
|
6
|
+
---
|
|
7
|
+
# Skills Config
|
|
8
|
+
|
|
9
|
+
All skills-related configuration lives under `skills` in `~/nexus/state/nexus.json`.
|
|
10
|
+
|
|
11
|
+
```json5
|
|
12
|
+
{
|
|
13
|
+
skills: {
|
|
14
|
+
allowBundled: ["brave-search", "gemini"],
|
|
15
|
+
load: {
|
|
16
|
+
extraDirs: [
|
|
17
|
+
"~/Projects/agent-scripts/skills",
|
|
18
|
+
"~/Projects/oss/some-skill-pack/skills"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
install: {
|
|
22
|
+
preferBrew: true,
|
|
23
|
+
nodeManager: "npm" // npm | pnpm | yarn | bun
|
|
24
|
+
},
|
|
25
|
+
entries: {
|
|
26
|
+
"nano-banana-pro": {
|
|
27
|
+
enabled: true,
|
|
28
|
+
apiKey: "GEMINI_KEY_HERE",
|
|
29
|
+
env: {
|
|
30
|
+
GEMINI_API_KEY: "GEMINI_KEY_HERE"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
peekaboo: { enabled: true },
|
|
34
|
+
sag: { enabled: false }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Fields
|
|
41
|
+
|
|
42
|
+
- `allowBundled`: optional allowlist for **bundled** skills only. When set, only
|
|
43
|
+
bundled skills in the list are eligible (home/project/extraDirs skills unaffected).
|
|
44
|
+
- `load.extraDirs`: additional skill directories to scan (lowest precedence).
|
|
45
|
+
- `install.preferBrew`: prefer brew installers when available (default: true).
|
|
46
|
+
- `install.nodeManager`: node installer preference (`npm` | `pnpm` | `yarn` | `bun`, default: npm).
|
|
47
|
+
- `entries.<skillKey>`: per-skill overrides.
|
|
48
|
+
|
|
49
|
+
Per-skill fields:
|
|
50
|
+
- `enabled`: set `false` to disable a skill even if it’s bundled/installed.
|
|
51
|
+
- `env`: environment variables injected for the agent run (only if not already set).
|
|
52
|
+
- `apiKey`: optional convenience for skills that declare a primary env var.
|
|
53
|
+
|
|
54
|
+
## Notes
|
|
55
|
+
|
|
56
|
+
- Keys under `entries` map to the skill name by default. If a skill defines
|
|
57
|
+
`metadata.nexus.skillKey`, use that key instead.
|
|
58
|
+
- Changes to skills are picked up on the next new session.
|
package/docs/skills.md
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Skills: bundled vs home/project, gating rules, and config/env wiring"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying skills
|
|
5
|
+
- Changing skill gating or load rules
|
|
6
|
+
---
|
|
7
|
+
# Skills (Nexus)
|
|
8
|
+
|
|
9
|
+
Nexus uses **AgentSkills-compatible** skill folders to teach the agent how to use tools. Each skill is a directory containing a `SKILL.md` with YAML frontmatter and instructions. Nexus loads **bundled skills** plus optional local overrides, and filters them at load time based on environment, config, and binary presence.
|
|
10
|
+
|
|
11
|
+
## Locations and precedence
|
|
12
|
+
|
|
13
|
+
Skills are loaded from **(at most) three** places:
|
|
14
|
+
|
|
15
|
+
1) **Bundled baseline**: shipped with the install (npm package or Nexus.app)
|
|
16
|
+
2) **Home skills** (portable): `~/nexus/home/skills`
|
|
17
|
+
3) **Project skills** (portable): `<projectRoot>/skills`
|
|
18
|
+
|
|
19
|
+
If a skill name conflicts, precedence is:
|
|
20
|
+
|
|
21
|
+
`<projectRoot>/skills` (highest) → `~/nexus/home/skills` → bundled baseline (lowest)
|
|
22
|
+
|
|
23
|
+
Additionally, you can configure extra skill folders (lowest precedence) via
|
|
24
|
+
`skills.load.extraDirs` in `~/nexus/state/nexus.json`.
|
|
25
|
+
|
|
26
|
+
## Format (AgentSkills + Pi-compatible)
|
|
27
|
+
|
|
28
|
+
`SKILL.md` must include at least:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
---
|
|
32
|
+
name: nano-banana-pro
|
|
33
|
+
description: Generate or edit images via Gemini 3 Pro Image
|
|
34
|
+
---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Notes:
|
|
38
|
+
- We follow the AgentSkills spec for layout/intent.
|
|
39
|
+
- The parser used by the embedded agent supports **single-line** frontmatter keys only.
|
|
40
|
+
- `metadata` should be a **single-line JSON object**.
|
|
41
|
+
- Use `{baseDir}` in instructions to reference the skill folder path.
|
|
42
|
+
- Optional frontmatter keys:
|
|
43
|
+
- `homepage` — URL surfaced as “Website” in the macOS Skills UI (also supported via `metadata.nexus.homepage`).
|
|
44
|
+
|
|
45
|
+
## Gating (load-time filters)
|
|
46
|
+
|
|
47
|
+
Nexus **filters skills at load time** using `metadata` (single-line JSON):
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
---
|
|
51
|
+
name: nano-banana-pro
|
|
52
|
+
description: Generate or edit images via Gemini 3 Pro Image
|
|
53
|
+
metadata: {"nexus":{"requires":{"bins":["uv"],"env":["GEMINI_API_KEY"],"config":["browser.enabled"]},"primaryEnv":"GEMINI_API_KEY"}}
|
|
54
|
+
---
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Fields under `metadata.nexus`:
|
|
58
|
+
- `always: true` — always include the skill (skip other gates).
|
|
59
|
+
- `emoji` — optional emoji used by the macOS Skills UI.
|
|
60
|
+
- `homepage` — optional URL shown as “Website” in the macOS Skills UI.
|
|
61
|
+
- `os` — optional list of platforms (`darwin`, `linux`, `win32`). If set, the skill is only eligible on those OSes.
|
|
62
|
+
- `requires.bins` — list; each must exist on `PATH`.
|
|
63
|
+
- `requires.anyBins` — list; at least one must exist on `PATH`.
|
|
64
|
+
- `requires.env` — list; env var must exist **or** be provided in config.
|
|
65
|
+
- `requires.config` — list of `nexus.json` paths that must be truthy.
|
|
66
|
+
- `primaryEnv` — env var name associated with `skills.entries.<name>.apiKey`.
|
|
67
|
+
- `install` — optional array of installer specs used by the macOS Skills UI (brew/node/go/uv).
|
|
68
|
+
|
|
69
|
+
Installer example:
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
---
|
|
73
|
+
name: gemini
|
|
74
|
+
description: Use Gemini CLI for coding assistance and Google search lookups.
|
|
75
|
+
metadata: {"nexus":{"emoji":"♊️","requires":{"bins":["gemini"]},"install":[{"id":"brew","kind":"brew","formula":"gemini-cli","bins":["gemini"],"label":"Install Gemini CLI (brew)"}]}}
|
|
76
|
+
---
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Notes:
|
|
80
|
+
- If multiple installers are listed, the gateway picks a **single** preferred option (brew when available, otherwise node).
|
|
81
|
+
- Node installs honor `skills.install.nodeManager` in `nexus.json` (default: npm; options: npm/pnpm/yarn/bun).
|
|
82
|
+
- Go installs: if `go` is missing and `brew` is available, the gateway installs Go via Homebrew first and sets `GOBIN` to Homebrew’s `bin` when possible.
|
|
83
|
+
|
|
84
|
+
If no `metadata.nexus` is present, the skill is always eligible (unless
|
|
85
|
+
disabled in config or blocked by `skills.allowBundled` for bundled skills).
|
|
86
|
+
|
|
87
|
+
## Config overrides (`~/nexus/state/nexus.json`)
|
|
88
|
+
|
|
89
|
+
Skills can be toggled and supplied with env values:
|
|
90
|
+
|
|
91
|
+
```json5
|
|
92
|
+
{
|
|
93
|
+
skills: {
|
|
94
|
+
entries: {
|
|
95
|
+
"nano-banana-pro": {
|
|
96
|
+
enabled: true,
|
|
97
|
+
apiKey: "GEMINI_KEY_HERE",
|
|
98
|
+
env: {
|
|
99
|
+
GEMINI_API_KEY: "GEMINI_KEY_HERE"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
peekaboo: { enabled: true },
|
|
103
|
+
sag: { enabled: false }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Note: if the skill name contains hyphens, quote the key (JSON5 allows quoted keys).
|
|
110
|
+
|
|
111
|
+
Config keys match the **skill name** by default. If a skill defines
|
|
112
|
+
`metadata.nexus.skillKey`, use that key under `skills.entries`.
|
|
113
|
+
|
|
114
|
+
Rules:
|
|
115
|
+
- `enabled: false` disables the skill even if it’s bundled/installed.
|
|
116
|
+
- `env`: injected **only if** the variable isn’t already set in the process.
|
|
117
|
+
- `apiKey`: convenience for skills that declare `metadata.nexus.primaryEnv`.
|
|
118
|
+
- `allowBundled`: optional allowlist for **bundled** skills only. If set, only
|
|
119
|
+
bundled skills in the list are eligible (home/project/extraDirs skills unaffected).
|
|
120
|
+
|
|
121
|
+
## Environment injection (per agent run)
|
|
122
|
+
|
|
123
|
+
When an agent run starts, Nexus:
|
|
124
|
+
1) Reads skill metadata.
|
|
125
|
+
2) Applies any `skills.entries.<key>.env` or `skills.entries.<key>.apiKey` to
|
|
126
|
+
`process.env`.
|
|
127
|
+
3) Builds the system prompt with **eligible** skills.
|
|
128
|
+
4) Restores the original environment after the run ends.
|
|
129
|
+
|
|
130
|
+
This is **scoped to the agent run**, not a global shell environment.
|
|
131
|
+
|
|
132
|
+
## Session snapshot (performance)
|
|
133
|
+
|
|
134
|
+
Nexus snapshots the eligible skills **when a session starts** and reuses that list for subsequent turns in the same session. Changes to skills or config take effect on the next new session.
|
|
135
|
+
|
|
136
|
+
## Bundled baseline + overrides
|
|
137
|
+
|
|
138
|
+
Nexus ships a baseline set of skills as **bundled skills** as part of the
|
|
139
|
+
install (npm package or Nexus.app).
|
|
140
|
+
|
|
141
|
+
Overrides live in files (portable):
|
|
142
|
+
- home: `~/nexus/home/skills/<skill>/SKILL.md`
|
|
143
|
+
- project: `<projectRoot>/skills/<skill>/SKILL.md`
|
|
144
|
+
|
|
145
|
+
If you need a machine-local (non-portable) skill dir, prefer adding it explicitly
|
|
146
|
+
via `skills.load.extraDirs` in `~/nexus/state/nexus.json` (rather than relying on
|
|
147
|
+
an implicit hidden folder).
|
|
148
|
+
|
|
149
|
+
## Config reference
|
|
150
|
+
|
|
151
|
+
See [`docs/skills-config.md`](https://docs.nexus.bot/skills-config) for the full configuration schema.
|
|
152
|
+
|
|
153
|
+
---
|
package/docs/slack.md
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Slack socket mode setup and Nexus config"
|
|
3
|
+
read_when: "Setting up Slack or debugging Slack socket mode"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Slack (socket mode)
|
|
7
|
+
|
|
8
|
+
## Setup
|
|
9
|
+
1) Create a Slack app (From scratch) in https://api.slack.com/apps.
|
|
10
|
+
2) **Socket Mode** → toggle on. Then go to **Basic Information** → **App-Level Tokens** → **Generate Token and Scopes** with scope `connections:write`. Copy the **App Token** (`xapp-...`).
|
|
11
|
+
3) **OAuth & Permissions** → add bot token scopes (use the manifest below). Click **Install to Workspace**. Copy the **Bot User OAuth Token** (`xoxb-...`).
|
|
12
|
+
4) **Event Subscriptions** → enable events and subscribe to:
|
|
13
|
+
- `message.*` (includes edits/deletes/thread broadcasts)
|
|
14
|
+
- `app_mention`
|
|
15
|
+
- `reaction_added`, `reaction_removed`
|
|
16
|
+
- `member_joined_channel`, `member_left_channel`
|
|
17
|
+
- `channel_rename`
|
|
18
|
+
- `pin_added`, `pin_removed`
|
|
19
|
+
5) Invite the bot to channels you want it to read.
|
|
20
|
+
6) Slash Commands → create the `/nexus` command (or your preferred name).
|
|
21
|
+
7) App Home → enable the **Messages Tab** so users can DM the bot.
|
|
22
|
+
|
|
23
|
+
Use the manifest below so scopes and events stay in sync.
|
|
24
|
+
|
|
25
|
+
## Manifest (optional)
|
|
26
|
+
Use this Slack app manifest to create the app quickly (adjust the name/command if you want).
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"display_information": {
|
|
31
|
+
"name": "Nexus",
|
|
32
|
+
"description": "Slack connector for Nexus"
|
|
33
|
+
},
|
|
34
|
+
"features": {
|
|
35
|
+
"bot_user": {
|
|
36
|
+
"display_name": "Nexus",
|
|
37
|
+
"always_online": false
|
|
38
|
+
},
|
|
39
|
+
"app_home": {
|
|
40
|
+
"messages_tab_enabled": true,
|
|
41
|
+
"messages_tab_read_only_enabled": false
|
|
42
|
+
},
|
|
43
|
+
"slash_commands": [
|
|
44
|
+
{
|
|
45
|
+
"command": "/nexus",
|
|
46
|
+
"description": "Send a message to Nexus",
|
|
47
|
+
"should_escape": false
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"oauth_config": {
|
|
52
|
+
"scopes": {
|
|
53
|
+
"bot": [
|
|
54
|
+
"chat:write",
|
|
55
|
+
"channels:history",
|
|
56
|
+
"channels:read",
|
|
57
|
+
"groups:history",
|
|
58
|
+
"groups:read",
|
|
59
|
+
"groups:write",
|
|
60
|
+
"im:history",
|
|
61
|
+
"im:read",
|
|
62
|
+
"im:write",
|
|
63
|
+
"mpim:history",
|
|
64
|
+
"mpim:read",
|
|
65
|
+
"mpim:write",
|
|
66
|
+
"users:read",
|
|
67
|
+
"app_mentions:read",
|
|
68
|
+
"reactions:read",
|
|
69
|
+
"reactions:write",
|
|
70
|
+
"pins:read",
|
|
71
|
+
"pins:write",
|
|
72
|
+
"emoji:read",
|
|
73
|
+
"commands",
|
|
74
|
+
"files:read",
|
|
75
|
+
"files:write"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"settings": {
|
|
80
|
+
"socket_mode_enabled": true,
|
|
81
|
+
"event_subscriptions": {
|
|
82
|
+
"bot_events": [
|
|
83
|
+
"app_mention",
|
|
84
|
+
"message.channels",
|
|
85
|
+
"message.groups",
|
|
86
|
+
"message.im",
|
|
87
|
+
"message.mpim",
|
|
88
|
+
"reaction_added",
|
|
89
|
+
"reaction_removed",
|
|
90
|
+
"member_joined_channel",
|
|
91
|
+
"member_left_channel",
|
|
92
|
+
"channel_rename",
|
|
93
|
+
"pin_added",
|
|
94
|
+
"pin_removed"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Scopes (current vs optional)
|
|
102
|
+
Slack's Conversations API is type-scoped: you only need the scopes for the
|
|
103
|
+
conversation types you actually touch (channels, groups, im, mpim). See
|
|
104
|
+
https://api.slack.com/docs/conversations-api for the overview.
|
|
105
|
+
|
|
106
|
+
### Required by current code
|
|
107
|
+
- `chat:write` (send/update/delete messages via `chat.postMessage`)
|
|
108
|
+
https://api.slack.com/methods/chat.postMessage
|
|
109
|
+
- `im:write` (open DMs via `conversations.open` for user DMs)
|
|
110
|
+
https://api.slack.com/methods/conversations.open
|
|
111
|
+
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
|
112
|
+
(`conversations.history` in `src/slack/actions.ts`)
|
|
113
|
+
https://api.slack.com/methods/conversations.history
|
|
114
|
+
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
|
115
|
+
(`conversations.info` in `src/slack/monitor.ts`)
|
|
116
|
+
https://api.slack.com/methods/conversations.info
|
|
117
|
+
- `users:read` (`users.info` in `src/slack/monitor.ts` + `src/slack/actions.ts`)
|
|
118
|
+
https://api.slack.com/methods/users.info
|
|
119
|
+
- `reactions:read`, `reactions:write` (`reactions.get` / `reactions.add`)
|
|
120
|
+
https://api.slack.com/methods/reactions.get
|
|
121
|
+
https://api.slack.com/methods/reactions.add
|
|
122
|
+
- `pins:read`, `pins:write` (`pins.list` / `pins.add` / `pins.remove`)
|
|
123
|
+
https://api.slack.com/scopes/pins:read
|
|
124
|
+
https://api.slack.com/scopes/pins:write
|
|
125
|
+
- `emoji:read` (`emoji.list`)
|
|
126
|
+
https://api.slack.com/scopes/emoji:read
|
|
127
|
+
- `files:write` (uploads via `files.uploadV2`)
|
|
128
|
+
https://api.slack.com/messaging/files/uploading
|
|
129
|
+
|
|
130
|
+
### Not needed today (but likely future)
|
|
131
|
+
- `mpim:write` (only if we add group-DM open/DM start via `conversations.open`)
|
|
132
|
+
- `groups:write` (only if we add private-channel management: create/rename/invite/archive)
|
|
133
|
+
- `chat:write.public` (only if we want to post to channels the bot isn't in)
|
|
134
|
+
https://api.slack.com/scopes/chat:write.public
|
|
135
|
+
- `users:read.email` (only if we need email fields from `users.info`)
|
|
136
|
+
https://api.slack.com/changelog/2017-04-narrowing-email-access
|
|
137
|
+
- `files:read` (only if we start listing/reading file metadata)
|
|
138
|
+
|
|
139
|
+
## Config
|
|
140
|
+
Slack uses Socket Mode only (no HTTP webhook server). Provide both tokens:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"slack": {
|
|
145
|
+
"enabled": true,
|
|
146
|
+
"botToken": "xoxb-...",
|
|
147
|
+
"appToken": "xapp-...",
|
|
148
|
+
"groupPolicy": "open",
|
|
149
|
+
"dm": {
|
|
150
|
+
"enabled": true,
|
|
151
|
+
"policy": "pairing",
|
|
152
|
+
"allowFrom": ["U123", "U456", "*"],
|
|
153
|
+
"groupEnabled": false,
|
|
154
|
+
"groupChannels": ["G123"]
|
|
155
|
+
},
|
|
156
|
+
"channels": {
|
|
157
|
+
"C123": { "allow": true, "requireMention": true },
|
|
158
|
+
"#general": { "allow": true, "requireMention": false }
|
|
159
|
+
},
|
|
160
|
+
"reactionNotifications": "own",
|
|
161
|
+
"reactionAllowlist": ["U123"],
|
|
162
|
+
"actions": {
|
|
163
|
+
"reactions": true,
|
|
164
|
+
"messages": true,
|
|
165
|
+
"pins": true,
|
|
166
|
+
"memberInfo": true,
|
|
167
|
+
"emojiList": true
|
|
168
|
+
},
|
|
169
|
+
"slashCommand": {
|
|
170
|
+
"enabled": true,
|
|
171
|
+
"name": "nexus",
|
|
172
|
+
"sessionPrefix": "slack:slash",
|
|
173
|
+
"ephemeral": true
|
|
174
|
+
},
|
|
175
|
+
"textChunkLimit": 4000,
|
|
176
|
+
"mediaMaxMb": 20
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Tokens can also be supplied via env vars:
|
|
182
|
+
- `SLACK_BOT_TOKEN`
|
|
183
|
+
- `SLACK_APP_TOKEN`
|
|
184
|
+
|
|
185
|
+
Ack reactions are controlled globally via `messages.ackReaction` +
|
|
186
|
+
`messages.ackReactionScope`.
|
|
187
|
+
|
|
188
|
+
## Sessions + routing
|
|
189
|
+
- DMs share the `main` session (like WhatsApp/Telegram).
|
|
190
|
+
- Channels map to `slack:channel:<channelId>` sessions.
|
|
191
|
+
- Slash commands use `slack:slash:<userId>` sessions.
|
|
192
|
+
|
|
193
|
+
## DM security (pairing)
|
|
194
|
+
- Default: `slack.dm.policy="pairing"` — unknown DM senders get a pairing code.
|
|
195
|
+
- Approve via: `nexus pairing approve --provider slack <code>`.
|
|
196
|
+
- To allow anyone: set `slack.dm.policy="open"` and `slack.dm.allowFrom=["*"]`.
|
|
197
|
+
|
|
198
|
+
## Group policy
|
|
199
|
+
- `slack.groupPolicy` controls channel handling (`open|disabled|allowlist`).
|
|
200
|
+
- `allowlist` requires channels to be listed in `slack.channels`.
|
|
201
|
+
|
|
202
|
+
## Delivery targets
|
|
203
|
+
Use these with cron/CLI sends:
|
|
204
|
+
- `user:<id>` for DMs
|
|
205
|
+
- `channel:<id>` for channels
|
|
206
|
+
|
|
207
|
+
## Tool actions
|
|
208
|
+
Slack tool actions can be gated with `slack.actions.*`:
|
|
209
|
+
|
|
210
|
+
| Action group | Default | Notes |
|
|
211
|
+
| --- | --- | --- |
|
|
212
|
+
| reactions | enabled | React + list reactions |
|
|
213
|
+
| messages | enabled | Read/send/edit/delete |
|
|
214
|
+
| pins | enabled | Pin/unpin/list |
|
|
215
|
+
| memberInfo | enabled | Member info |
|
|
216
|
+
| emojiList | enabled | Custom emoji list |
|
|
217
|
+
|
|
218
|
+
## Notes
|
|
219
|
+
- Mention gating is controlled via `slack.channels` (set `requireMention` to `true`); `routing.groupChat.mentionPatterns` also count as mentions.
|
|
220
|
+
- Reaction notifications follow `slack.reactionNotifications` (use `reactionAllowlist` with mode `allowlist`).
|
|
221
|
+
- Attachments are downloaded to the media store when permitted and under the size limit.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Sub-agents: spawning isolated agent runs that announce results back to the requester chat"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want background/parallel work via the agent
|
|
5
|
+
- You are changing sessions_spawn or sub-agent tool policy
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sub-agents
|
|
9
|
+
|
|
10
|
+
Sub-agents are background agent runs spawned from an existing agent run. They run in their own session (`subagent:<uuid>`) and, when finished, **announce** their result back to the requester chat provider.
|
|
11
|
+
|
|
12
|
+
Primary goals:
|
|
13
|
+
- Parallelize “research / long task / slow tool” work without blocking the main run.
|
|
14
|
+
- Keep sub-agents isolated by default (session separation + optional sandboxing).
|
|
15
|
+
- Keep the tool surface hard to misuse: sub-agents do **not** get session tools by default.
|
|
16
|
+
- Avoid nested fan-out: sub-agents cannot spawn sub-agents.
|
|
17
|
+
|
|
18
|
+
## Tool
|
|
19
|
+
|
|
20
|
+
Use `sessions_spawn`:
|
|
21
|
+
- Starts a sub-agent run (`deliver: false`, global lane: `subagent`)
|
|
22
|
+
- Then runs an announce step and posts the announce reply to the requester chat provider
|
|
23
|
+
|
|
24
|
+
Tool params:
|
|
25
|
+
- `task` (required)
|
|
26
|
+
- `label?` (optional)
|
|
27
|
+
- `timeoutSeconds?` (default `0`; `0` = fire-and-forget)
|
|
28
|
+
- `cleanup?` (`delete|keep`, default `delete`)
|
|
29
|
+
|
|
30
|
+
## Announce
|
|
31
|
+
|
|
32
|
+
Sub-agents report back via an announce step:
|
|
33
|
+
- The announce step runs inside the sub-agent session (not the requester session).
|
|
34
|
+
- If the sub-agent replies exactly `ANNOUNCE_SKIP`, nothing is posted.
|
|
35
|
+
- Otherwise the announce reply is posted to the requester chat provider via the gateway `send` method.
|
|
36
|
+
|
|
37
|
+
## Tool Policy (sub-agent tools)
|
|
38
|
+
|
|
39
|
+
By default, sub-agents get **all tools except session tools**:
|
|
40
|
+
- `sessions_list`
|
|
41
|
+
- `sessions_history`
|
|
42
|
+
- `sessions_send`
|
|
43
|
+
- `sessions_spawn`
|
|
44
|
+
|
|
45
|
+
Override via config:
|
|
46
|
+
|
|
47
|
+
```json5
|
|
48
|
+
{
|
|
49
|
+
agent: {
|
|
50
|
+
subagents: {
|
|
51
|
+
maxConcurrent: 1,
|
|
52
|
+
tools: {
|
|
53
|
+
// deny wins
|
|
54
|
+
deny: ["gateway", "cron"],
|
|
55
|
+
// if allow is set, it becomes allow-only (deny still wins)
|
|
56
|
+
// allow: ["read", "bash", "process"]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Concurrency
|
|
64
|
+
|
|
65
|
+
Sub-agents use a dedicated in-process queue lane:
|
|
66
|
+
- Lane name: `subagent`
|
|
67
|
+
- Concurrency: `agent.subagents.maxConcurrent` (default `1`)
|
|
68
|
+
|
|
69
|
+
## Limitations
|
|
70
|
+
|
|
71
|
+
- Sub-agent announce is **best-effort**. If the gateway restarts, pending “announce back” work is lost.
|
|
72
|
+
- Sub-agents still share the same gateway process resources; treat `maxConcurrent` as a safety valve.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Integrated Tailscale Serve/Funnel for the Gateway dashboard"
|
|
3
|
+
read_when:
|
|
4
|
+
- Exposing the Gateway Control UI outside localhost
|
|
5
|
+
- Automating tailnet or public dashboard access
|
|
6
|
+
---
|
|
7
|
+
# Tailscale (Gateway dashboard)
|
|
8
|
+
|
|
9
|
+
Nexus can auto-configure Tailscale **Serve** (tailnet) or **Funnel** (public) for the
|
|
10
|
+
Gateway dashboard and WebSocket port. This keeps the Gateway bound to loopback while
|
|
11
|
+
Tailscale provides HTTPS, routing, and (for Serve) identity headers.
|
|
12
|
+
|
|
13
|
+
## Modes
|
|
14
|
+
|
|
15
|
+
- `serve`: Tailnet-only HTTPS via `tailscale serve`. The gateway stays on `127.0.0.1`.
|
|
16
|
+
- `funnel`: Public HTTPS via `tailscale funnel`. Requires a shared password.
|
|
17
|
+
- `off`: Default (no Tailscale automation).
|
|
18
|
+
|
|
19
|
+
## Auth
|
|
20
|
+
|
|
21
|
+
Set `gateway.auth.mode` to control the handshake:
|
|
22
|
+
|
|
23
|
+
- `token` (default when `NEXUS_GATEWAY_TOKEN` is set)
|
|
24
|
+
- `password` (shared secret via `NEXUS_GATEWAY_PASSWORD` or config)
|
|
25
|
+
|
|
26
|
+
When `tailscale.mode = "serve"`, the gateway trusts Tailscale identity headers by
|
|
27
|
+
default unless you force `gateway.auth.mode` to `password` or set
|
|
28
|
+
`gateway.auth.allowTailscale: false`.
|
|
29
|
+
|
|
30
|
+
## Config examples
|
|
31
|
+
|
|
32
|
+
### Tailnet-only (Serve)
|
|
33
|
+
|
|
34
|
+
```json5
|
|
35
|
+
{
|
|
36
|
+
gateway: {
|
|
37
|
+
bind: "loopback",
|
|
38
|
+
tailscale: { mode: "serve" }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Open: `https://<magicdns>/` (or your configured `gateway.controlUi.basePath`)
|
|
44
|
+
|
|
45
|
+
### Public internet (Funnel + shared password)
|
|
46
|
+
|
|
47
|
+
```json5
|
|
48
|
+
{
|
|
49
|
+
gateway: {
|
|
50
|
+
bind: "loopback",
|
|
51
|
+
tailscale: { mode: "funnel" },
|
|
52
|
+
auth: { mode: "password", password: "replace-me" }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Prefer `NEXUS_GATEWAY_PASSWORD` over committing a password to disk.
|
|
58
|
+
|
|
59
|
+
## CLI examples
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
nexus gateway --tailscale serve
|
|
63
|
+
nexus gateway --tailscale funnel --auth password
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Notes
|
|
67
|
+
|
|
68
|
+
- Tailscale Serve/Funnel requires the `tailscale` CLI to be installed and logged in.
|
|
69
|
+
- `tailscale.mode: "funnel"` refuses to start unless auth mode is `password` to avoid public exposure.
|
|
70
|
+
- Set `gateway.tailscale.resetOnExit` if you want Nexus to undo `tailscale serve`
|
|
71
|
+
or `tailscale funnel` configuration on shutdown.
|
package/docs/talk.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Talk mode: continuous speech conversations with ElevenLabs TTS"
|
|
3
|
+
read_when:
|
|
4
|
+
- Implementing Talk mode on macOS/iOS/Android
|
|
5
|
+
- Changing voice/TTS/interrupt behavior
|
|
6
|
+
---
|
|
7
|
+
# Talk Mode
|
|
8
|
+
|
|
9
|
+
Talk mode is a continuous voice conversation loop:
|
|
10
|
+
1) Listen for speech
|
|
11
|
+
2) Send transcript to the model (main session, chat.send)
|
|
12
|
+
3) Wait for the response
|
|
13
|
+
4) Speak it via ElevenLabs (streaming playback)
|
|
14
|
+
|
|
15
|
+
## Behavior (macOS)
|
|
16
|
+
- **Always-on overlay** while Talk mode is enabled.
|
|
17
|
+
- **Listening → Thinking → Speaking** phase transitions.
|
|
18
|
+
- On a **short pause** (silence window), the current transcript is sent.
|
|
19
|
+
- Replies are **written to WebChat** (same as typing).
|
|
20
|
+
- **Interrupt on speech** (default on): if the user starts talking while the assistant is speaking, we stop playback and note the interruption timestamp for the next prompt.
|
|
21
|
+
|
|
22
|
+
## Voice directives in replies
|
|
23
|
+
The assistant may prefix its reply with a **single JSON line** to control voice:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{"voice":"<voice-id>","once":true}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Rules:
|
|
30
|
+
- First non-empty line only.
|
|
31
|
+
- Unknown keys are ignored.
|
|
32
|
+
- `once: true` applies to the current reply only.
|
|
33
|
+
- Without `once`, the voice becomes the new default for Talk mode.
|
|
34
|
+
- The JSON line is stripped before TTS playback.
|
|
35
|
+
|
|
36
|
+
Supported keys:
|
|
37
|
+
- `voice` / `voice_id` / `voiceId`
|
|
38
|
+
- `model` / `model_id` / `modelId`
|
|
39
|
+
- `speed`, `rate` (WPM), `stability`, `similarity`, `style`, `speakerBoost`
|
|
40
|
+
- `seed`, `normalize`, `lang`, `output_format`, `latency_tier`
|
|
41
|
+
- `once`
|
|
42
|
+
|
|
43
|
+
## Config (nexus.json)
|
|
44
|
+
```json5
|
|
45
|
+
{
|
|
46
|
+
"talk": {
|
|
47
|
+
"voiceId": "elevenlabs_voice_id",
|
|
48
|
+
"modelId": "eleven_v3",
|
|
49
|
+
"outputFormat": "mp3_44100_128",
|
|
50
|
+
"apiKey": "elevenlabs_api_key",
|
|
51
|
+
"interruptOnSpeech": true
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Defaults:
|
|
57
|
+
- `interruptOnSpeech`: true
|
|
58
|
+
- `voiceId`: falls back to `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` (or first ElevenLabs voice when API key is available)
|
|
59
|
+
- `modelId`: defaults to `eleven_v3` when unset
|
|
60
|
+
- `apiKey`: falls back to `ELEVENLABS_API_KEY` (or gateway shell profile if available)
|
|
61
|
+
- `outputFormat`: defaults to `pcm_44100` on macOS/iOS and `pcm_24000` on Android (set `mp3_*` to force MP3 streaming)
|
|
62
|
+
|
|
63
|
+
## macOS UI
|
|
64
|
+
- Menu bar toggle: **Talk**
|
|
65
|
+
- Config tab: **Talk Mode** group (voice id + interrupt toggle)
|
|
66
|
+
- Overlay:
|
|
67
|
+
- **Listening**: cloud pulses with mic level
|
|
68
|
+
- **Thinking**: sinking animation
|
|
69
|
+
- **Speaking**: radiating rings
|
|
70
|
+
- Click cloud: stop speaking
|
|
71
|
+
- Click X: exit Talk mode
|
|
72
|
+
|
|
73
|
+
## Notes
|
|
74
|
+
- Requires Speech + Microphone permissions.
|
|
75
|
+
- Uses `chat.send` against session key `main`.
|
|
76
|
+
- TTS uses ElevenLabs streaming API with `ELEVENLABS_API_KEY` and incremental playback on macOS/iOS/Android for lower latency.
|
|
77
|
+
- `stability` for `eleven_v3` is validated to `0.0`, `0.5`, or `1.0`; other models accept `0..1`.
|
|
78
|
+
- `latency_tier` is validated to `0..4` when set.
|
|
79
|
+
- Android supports `pcm_16000`, `pcm_22050`, `pcm_24000`, and `pcm_44100` output formats for low-latency AudioTrack streaming.
|