@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,702 @@
|
|
|
1
|
+
# Nexus Skill Gateway Design
|
|
2
|
+
|
|
3
|
+
> **Note**: State layout and credential storage are defined in
|
|
4
|
+
> `STATE_ARCHITECTURE.md`. References to per-skill state and usage logs in this
|
|
5
|
+
> design are canonical under `~/nexus/state/nexus/skills/{skill}/`.
|
|
6
|
+
|
|
7
|
+
*Complete specification for the skill gateway CLI that solves the two hard problems.*
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The skill gateway is a CLI interface that:
|
|
14
|
+
1. **Gates all skill discovery** — Agent sees only what's available/configured
|
|
15
|
+
2. **Wraps all skill execution** — Every invocation is logged automatically
|
|
16
|
+
3. **Tracks usage patterns** — Build "neural pathways" of what works
|
|
17
|
+
4. **Simplifies agent instructions** — Just "use `nexus skill run X`"
|
|
18
|
+
|
|
19
|
+
This solves both hard problems:
|
|
20
|
+
- **Problem 1 (Tracking State)**: Automatic via usage logging + execution gating
|
|
21
|
+
- **Problem 2 (Injecting State)**: Agent queries CLI, gets current state
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Design Principles
|
|
26
|
+
|
|
27
|
+
1. **CLI only** — No MCP servers, works everywhere including Cursor
|
|
28
|
+
2. **Build on existing infrastructure** — Extend current `nexus skills` commands
|
|
29
|
+
3. **Minimal SKILL.md changes** — New metadata goes in `~/nexus/state/`, not frontmatter
|
|
30
|
+
4. **Option C verification** — Verify once on first run, trust until failure
|
|
31
|
+
5. **Automatic logging** — Agent doesn't report, gateway captures everything
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Command Structure
|
|
36
|
+
|
|
37
|
+
### Existing Commands (Keep As-Is)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
nexus skills list [--ready|--locked|--json] # Existing, enhance with status
|
|
41
|
+
nexus skills refresh # Existing
|
|
42
|
+
nexus skills cursor-rules # Existing
|
|
43
|
+
nexus skills path # Existing
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### New Commands
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Skill details (NEW)
|
|
50
|
+
nexus skill show <name> # Show prompt + metadata + setup guide
|
|
51
|
+
nexus skill verify <name> # Check if configured/working
|
|
52
|
+
|
|
53
|
+
# Skill execution (NEW - THE GATEWAY)
|
|
54
|
+
nexus skill run <name> [-- args] # Run tool-based skill OR return prompt
|
|
55
|
+
|
|
56
|
+
# Usage statistics (NEW)
|
|
57
|
+
nexus skill stats [name] # Usage statistics (all or per-skill)
|
|
58
|
+
|
|
59
|
+
# State (NEW - convenience alias)
|
|
60
|
+
nexus status # Overall capability state (alias for skills list --summary)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## New Metadata Schema
|
|
66
|
+
|
|
67
|
+
### Per-Skill State (`~/nexus/state/nexus/skills/{skill}/state.json`)
|
|
68
|
+
|
|
69
|
+
This is separate from the skills manifest (`state/nexus/skills/manifest.json`). It tracks runtime state that changes:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
type SkillState = {
|
|
73
|
+
version: 1;
|
|
74
|
+
// Execution metadata
|
|
75
|
+
tool?: string; // CLI binary name (e.g., "gog", "eve", "op")
|
|
76
|
+
verify?: string; // Command to verify skill works (e.g., "gog gmail labels list")
|
|
77
|
+
|
|
78
|
+
// Runtime state (updated by gateway)
|
|
79
|
+
configured: boolean; // Has verification passed?
|
|
80
|
+
configuredAt?: string; // ISO timestamp of first successful verification
|
|
81
|
+
lastVerified?: string; // ISO timestamp of last verification
|
|
82
|
+
lastUsed?: string; // ISO timestamp of last execution
|
|
83
|
+
lastError?: string; // Last error message if failed
|
|
84
|
+
|
|
85
|
+
// Stats (computed from usage log)
|
|
86
|
+
totalInvocations?: number;
|
|
87
|
+
successRate?: number;
|
|
88
|
+
};
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Why Separate from SKILL.md?
|
|
92
|
+
|
|
93
|
+
1. **SKILL.md stays clean** — Standard format, shareable, no nexus-specific cruft
|
|
94
|
+
2. **State is mutable** — `configured`, `lastUsed`, etc. change frequently
|
|
95
|
+
3. **Consistent layout** — One file per skill plus the manifest
|
|
96
|
+
4. **Backward compatible** — Existing skills work without modification
|
|
97
|
+
|
|
98
|
+
### Initial Population
|
|
99
|
+
|
|
100
|
+
On first run or `nexus skills refresh`, populate per-skill state files by:
|
|
101
|
+
1. Scanning all skills
|
|
102
|
+
2. For skills with known tools, auto-populate `tool` field
|
|
103
|
+
3. Set `configured: false` until verified
|
|
104
|
+
|
|
105
|
+
We can hardcode a mapping for known skills initially:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
const KNOWN_SKILL_TOOLS: Record<string, { tool: string; verify: string }> = {
|
|
109
|
+
'gog': { tool: 'gog', verify: 'gog gmail labels list --account default' },
|
|
110
|
+
'eve': { tool: 'eve', verify: 'eve messages --limit 1' },
|
|
111
|
+
'1password': { tool: 'op', verify: 'op whoami' },
|
|
112
|
+
'tmux': { tool: 'tmux', verify: 'tmux -V' },
|
|
113
|
+
'peekaboo': { tool: 'peekaboo', verify: 'peekaboo --version' },
|
|
114
|
+
// ... etc
|
|
115
|
+
};
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Later, this can move to SKILL.md frontmatter or a separate config file per skill.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Command Specifications
|
|
123
|
+
|
|
124
|
+
### `nexus skill show <name>`
|
|
125
|
+
|
|
126
|
+
**Purpose**: Display skill details, prompt, and setup instructions.
|
|
127
|
+
|
|
128
|
+
**Implementation**:
|
|
129
|
+
1. Load skill from manifest (existing `loadWorkspaceSkillEntries`)
|
|
130
|
+
2. Load state from `state/nexus/skills/{skill}/state.json`
|
|
131
|
+
3. Format and display
|
|
132
|
+
|
|
133
|
+
**Output Format**:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
═══════════════════════════════════════════════════════════════
|
|
137
|
+
📧 GOG - Google Services Access
|
|
138
|
+
═══════════════════════════════════════════════════════════════
|
|
139
|
+
|
|
140
|
+
Status: ✅ Configured (last verified: 2026-01-14)
|
|
141
|
+
Tool: gog
|
|
142
|
+
Class: OAuth/Complex (requires Google OAuth setup)
|
|
143
|
+
|
|
144
|
+
Requirements:
|
|
145
|
+
• Binary: gog ✓
|
|
146
|
+
• OAuth: Google account connected ✓
|
|
147
|
+
|
|
148
|
+
Usage Stats:
|
|
149
|
+
• Total invocations: 312
|
|
150
|
+
• Success rate: 98.7%
|
|
151
|
+
• Last used: 2 hours ago
|
|
152
|
+
|
|
153
|
+
───────────────────────────────────────────────────────────────
|
|
154
|
+
PROMPT
|
|
155
|
+
───────────────────────────────────────────────────────────────
|
|
156
|
+
|
|
157
|
+
[Full SKILL.md content here]
|
|
158
|
+
|
|
159
|
+
───────────────────────────────────────────────────────────────
|
|
160
|
+
SETUP (if not configured)
|
|
161
|
+
───────────────────────────────────────────────────────────────
|
|
162
|
+
|
|
163
|
+
To configure this skill:
|
|
164
|
+
1. Install: go install github.com/nexus-xyz/gog@latest
|
|
165
|
+
2. Authenticate: gog auth login
|
|
166
|
+
3. Verify: nexus skill verify gog
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Flags**:
|
|
170
|
+
- `--json` — Output as JSON
|
|
171
|
+
- `--prompt-only` — Just the prompt content (for agent consumption)
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### `nexus skill run <name> [-- args]`
|
|
176
|
+
|
|
177
|
+
**Purpose**: The gateway. Execute a skill's tool or return its prompt.
|
|
178
|
+
|
|
179
|
+
**Flow**:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
183
|
+
│ nexus skill run <name> [-- args] │
|
|
184
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
185
|
+
│ │
|
|
186
|
+
│ 1. Load skill metadata │
|
|
187
|
+
│ - From manifest + per-skill state.json │
|
|
188
|
+
│ - If skill not found → error with suggestions │
|
|
189
|
+
│ │
|
|
190
|
+
│ 2. Check if skill has a tool │
|
|
191
|
+
│ - If no tool → return prompt content, log as "prompt", exit │
|
|
192
|
+
│ │
|
|
193
|
+
│ 3. Check if tool binary exists │
|
|
194
|
+
│ - If missing → show install instructions, exit 1 │
|
|
195
|
+
│ │
|
|
196
|
+
│ 4. Check if configured (first-run verification) │
|
|
197
|
+
│ - If never verified → run verify command │
|
|
198
|
+
│ - If verify fails → show setup instructions, exit 1 │
|
|
199
|
+
│ - If verify succeeds → update state, continue │
|
|
200
|
+
│ │
|
|
201
|
+
│ 5. Execute tool with args │
|
|
202
|
+
│ - cmd = exec.Command(tool, args...) │
|
|
203
|
+
│ - Capture stdout/stderr │
|
|
204
|
+
│ - Track duration │
|
|
205
|
+
│ │
|
|
206
|
+
│ 6. Log invocation │
|
|
207
|
+
│ - Append to per-skill usage.log │
|
|
208
|
+
│ - Update per-skill state.json (lastUsed, etc.) │
|
|
209
|
+
│ │
|
|
210
|
+
│ 7. Return output │
|
|
211
|
+
│ - Print captured output to stdout │
|
|
212
|
+
│ - Exit with tool's exit code │
|
|
213
|
+
│ │
|
|
214
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Implementation (TypeScript)**:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
async function runSkill(skillName: string, args: string[]): Promise<void> {
|
|
221
|
+
const skill = await loadSkill(skillName);
|
|
222
|
+
if (!skill) {
|
|
223
|
+
console.error(`Skill '${skillName}' not found.`);
|
|
224
|
+
console.error(`Run 'nexus skills list' to see available skills.`);
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const state = await loadSkillState(skillName);
|
|
229
|
+
|
|
230
|
+
// Pure prompt skill
|
|
231
|
+
if (!state.tool) {
|
|
232
|
+
console.log(skill.prompt);
|
|
233
|
+
await logUsage({ skill: skillName, type: 'prompt' });
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Check binary exists
|
|
238
|
+
if (!hasBinary(state.tool)) {
|
|
239
|
+
console.error(`Tool '${state.tool}' not found in PATH.`);
|
|
240
|
+
if (skill.install) {
|
|
241
|
+
console.error(`\nInstall with: ${skill.install}`);
|
|
242
|
+
}
|
|
243
|
+
process.exit(1);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// First-run verification (Option C)
|
|
247
|
+
if (!state.configured) {
|
|
248
|
+
console.error(`Verifying skill '${skillName}'...`);
|
|
249
|
+
const verified = await verifySkill(skillName, state.verify);
|
|
250
|
+
if (!verified.ok) {
|
|
251
|
+
console.error(`Skill '${skillName}' is not configured.`);
|
|
252
|
+
console.error(`Error: ${verified.error}`);
|
|
253
|
+
console.error(`\nSetup instructions:`);
|
|
254
|
+
console.error(skill.setupGuide || `Run 'nexus skill show ${skillName}' for details.`);
|
|
255
|
+
process.exit(1);
|
|
256
|
+
}
|
|
257
|
+
await updateSkillState(skillName, { configured: true, configuredAt: new Date().toISOString() });
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Execute
|
|
261
|
+
const start = Date.now();
|
|
262
|
+
const result = await exec(state.tool, args);
|
|
263
|
+
const duration = Date.now() - start;
|
|
264
|
+
|
|
265
|
+
// Log
|
|
266
|
+
await logUsage({
|
|
267
|
+
skill: skillName,
|
|
268
|
+
type: 'tool',
|
|
269
|
+
args,
|
|
270
|
+
exitCode: result.exitCode,
|
|
271
|
+
durationMs: duration,
|
|
272
|
+
error: result.exitCode !== 0 ? result.stderr : undefined,
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
// Update state
|
|
276
|
+
await updateSkillState(skillName, {
|
|
277
|
+
lastUsed: new Date().toISOString(),
|
|
278
|
+
lastError: result.exitCode !== 0 ? result.stderr.slice(0, 200) : undefined,
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
// Output
|
|
282
|
+
process.stdout.write(result.stdout);
|
|
283
|
+
process.stderr.write(result.stderr);
|
|
284
|
+
process.exit(result.exitCode);
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Flags**:
|
|
289
|
+
- `--dry-run` — Show what would be executed without running
|
|
290
|
+
- `--no-verify` — Skip verification check (for debugging)
|
|
291
|
+
- `--json` — Output as JSON (including metadata)
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
### `nexus skill verify <name>`
|
|
296
|
+
|
|
297
|
+
**Purpose**: Explicitly verify a skill works.
|
|
298
|
+
|
|
299
|
+
**Flow**:
|
|
300
|
+
1. Load skill state
|
|
301
|
+
2. If no verify command → "Skill has no verification command"
|
|
302
|
+
3. Run verify command
|
|
303
|
+
4. Update state with result
|
|
304
|
+
5. Report success/failure
|
|
305
|
+
|
|
306
|
+
**Output**:
|
|
307
|
+
```
|
|
308
|
+
Verifying skill 'gog'...
|
|
309
|
+
Running: gog gmail labels list --account default
|
|
310
|
+
|
|
311
|
+
✅ Skill 'gog' verified successfully.
|
|
312
|
+
Configured at: 2026-01-14T10:30:00Z
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
or
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
Verifying skill 'brave-search'...
|
|
319
|
+
Checking: BRAVE_API_KEY environment variable
|
|
320
|
+
|
|
321
|
+
❌ Skill 'brave-search' verification failed.
|
|
322
|
+
Error: BRAVE_API_KEY not set
|
|
323
|
+
|
|
324
|
+
Setup instructions:
|
|
325
|
+
1. Get an API key from https://brave.com/search/api/
|
|
326
|
+
2. Set: export BRAVE_API_KEY=your-key
|
|
327
|
+
3. Or add to ~/.zshrc for persistence
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
### `nexus skill stats [name]`
|
|
333
|
+
|
|
334
|
+
**Purpose**: Show usage statistics.
|
|
335
|
+
|
|
336
|
+
**Implementation**:
|
|
337
|
+
1. Parse per-skill `usage.log`
|
|
338
|
+
2. Aggregate by skill
|
|
339
|
+
3. Calculate success rates, frequency, etc.
|
|
340
|
+
4. Format output
|
|
341
|
+
|
|
342
|
+
**Output (all skills)**:
|
|
343
|
+
```
|
|
344
|
+
═══════════════════════════════════════════════════════════════
|
|
345
|
+
NEXUS SKILL USAGE STATISTICS
|
|
346
|
+
═══════════════════════════════════════════════════════════════
|
|
347
|
+
|
|
348
|
+
Total invocations: 847 (past 30 days)
|
|
349
|
+
Overall success rate: 96.2%
|
|
350
|
+
|
|
351
|
+
Most Used Skills:
|
|
352
|
+
# Skill Calls Success Avg Time Last Used
|
|
353
|
+
1. gog 312 98.7% 1.2s 2 hours ago
|
|
354
|
+
2. eve 198 95.2% 0.8s 1 day ago
|
|
355
|
+
3. filesystem 89 100% (prompt) 3 hours ago
|
|
356
|
+
4. 1password 67 99.1% 0.3s 5 hours ago
|
|
357
|
+
5. computer-use 52 100% (prompt) 1 day ago
|
|
358
|
+
|
|
359
|
+
Recent Failures (past 7 days):
|
|
360
|
+
• brave-search: "API key expired" (3 occurrences)
|
|
361
|
+
• discord: "bot not responding" (1 occurrence)
|
|
362
|
+
|
|
363
|
+
Skill Categories:
|
|
364
|
+
User Data: 412 calls (gog, eve)
|
|
365
|
+
Credentials: 67 calls (1password)
|
|
366
|
+
Prompts: 141 calls (filesystem, computer-use)
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**Output (single skill)**:
|
|
370
|
+
```
|
|
371
|
+
═══════════════════════════════════════════════════════════════
|
|
372
|
+
GOG USAGE STATISTICS
|
|
373
|
+
═══════════════════════════════════════════════════════════════
|
|
374
|
+
|
|
375
|
+
Total invocations: 312
|
|
376
|
+
Success rate: 98.7%
|
|
377
|
+
Average duration: 1.2s
|
|
378
|
+
|
|
379
|
+
Daily Usage (past 7 days):
|
|
380
|
+
Mon: ████████████ 45
|
|
381
|
+
Tue: ██████████ 38
|
|
382
|
+
Wed: ████████████████ 52
|
|
383
|
+
Thu: ██████████████ 48
|
|
384
|
+
Fri: ████████ 32
|
|
385
|
+
Sat: ████████████ 44
|
|
386
|
+
Sun: ██████████████ 53
|
|
387
|
+
|
|
388
|
+
Most Common Commands:
|
|
389
|
+
1. gmail messages list (124 calls)
|
|
390
|
+
2. calendar events today (89 calls)
|
|
391
|
+
3. drive files list (56 calls)
|
|
392
|
+
|
|
393
|
+
Recent Errors:
|
|
394
|
+
• 2026-01-13 14:32: "rate limit exceeded"
|
|
395
|
+
• 2026-01-10 09:15: "token expired" (resolved)
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**Flags**:
|
|
399
|
+
- `--json` — Output as JSON
|
|
400
|
+
- `--days <n>` — Time window (default: 30)
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## Usage Log Format
|
|
405
|
+
|
|
406
|
+
**Location**: `~/nexus/state/nexus/skills/{skill}/usage.log`
|
|
407
|
+
|
|
408
|
+
**Format**: JSON Lines (one JSON object per line, append-only)
|
|
409
|
+
|
|
410
|
+
```json
|
|
411
|
+
{"ts":"2026-01-14T10:00:00.000Z","skill":"gog","type":"tool","args":["gmail","messages","list","--limit","5"],"exit":0,"ms":1234}
|
|
412
|
+
{"ts":"2026-01-14T10:01:00.000Z","skill":"eve","type":"tool","args":["messages"],"exit":1,"ms":50,"error":"not configured"}
|
|
413
|
+
{"ts":"2026-01-14T10:02:00.000Z","skill":"filesystem","type":"prompt","ms":5}
|
|
414
|
+
{"ts":"2026-01-14T10:05:00.000Z","skill":"gog","type":"tool","args":["calendar","events","today"],"exit":0,"ms":890}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Schema**:
|
|
418
|
+
```typescript
|
|
419
|
+
type UsageLogEntry = {
|
|
420
|
+
ts: string; // ISO timestamp
|
|
421
|
+
skill: string; // Skill name
|
|
422
|
+
type: 'tool' | 'prompt'; // Execution type
|
|
423
|
+
args?: string[]; // Arguments (for tools)
|
|
424
|
+
exit?: number; // Exit code (for tools)
|
|
425
|
+
ms: number; // Duration in milliseconds
|
|
426
|
+
error?: string; // Error message (truncated to 200 chars)
|
|
427
|
+
};
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Log Rotation**:
|
|
431
|
+
- Keep last 10,000 entries (or 30 days, whichever is smaller)
|
|
432
|
+
- Rotate on `nexus skills refresh` or when log exceeds 10MB
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## Enhanced `nexus skills list`
|
|
437
|
+
|
|
438
|
+
Update existing command to show configuration status:
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
$ nexus skills list
|
|
442
|
+
|
|
443
|
+
═══════════════════════════════════════════════════════════════
|
|
444
|
+
NEXUS SKILLS (47 total)
|
|
445
|
+
═══════════════════════════════════════════════════════════════
|
|
446
|
+
|
|
447
|
+
✅ READY (configured, working) — 12 skills
|
|
448
|
+
gog Google services (gmail, calendar, drive) [tool: gog]
|
|
449
|
+
eve iMessage access (read tier) [tool: eve]
|
|
450
|
+
1password Credential management [tool: op]
|
|
451
|
+
filesystem File organization [prompt]
|
|
452
|
+
computer-use Browser/desktop automation [prompt]
|
|
453
|
+
peekaboo Screenshot capture [tool: peekaboo]
|
|
454
|
+
tmux Terminal multiplexing [tool: tmux]
|
|
455
|
+
qmd Markdown rendering [tool: qmd]
|
|
456
|
+
aix AI conversations [tool: aix]
|
|
457
|
+
video-frames Video frame extraction [tool: ffmpeg]
|
|
458
|
+
weather Weather lookup [prompt]
|
|
459
|
+
camsnap Camera capture [tool: camsnap]
|
|
460
|
+
|
|
461
|
+
⚠️ NEEDS SETUP (requires configuration) — 8 skills
|
|
462
|
+
brave-search Web search needs: BRAVE_API_KEY
|
|
463
|
+
summarize Text summarization needs: API key
|
|
464
|
+
discord Agent communications needs: bot token
|
|
465
|
+
telegram Agent communications needs: bot token
|
|
466
|
+
eve (send) iMessage sending blocked: Apple ID setup
|
|
467
|
+
nexus-cloud Cloud sync needs: Cloudflare setup
|
|
468
|
+
gifgrep GIF search (full) needs: GIPHY_API_KEY
|
|
469
|
+
coding-agent Autonomous coding needs: API key + codex
|
|
470
|
+
|
|
471
|
+
⏳ NOT INSTALLED (binary missing) — 3 skills
|
|
472
|
+
nano-pdf PDF processing install: brew install nano-pdf
|
|
473
|
+
songsee Music recognition install: brew install songsee
|
|
474
|
+
|
|
475
|
+
💤 DISABLED (explicitly disabled in config) — 1 skill
|
|
476
|
+
experimental Experimental features disabled in nexus.json
|
|
477
|
+
|
|
478
|
+
Run 'nexus skill show <name>' for details on any skill.
|
|
479
|
+
Run 'nexus skill run <name>' to use a skill.
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**New Flags**:
|
|
483
|
+
- `--ready` — Only show configured skills
|
|
484
|
+
- `--locked` — Only show skills needing setup
|
|
485
|
+
- `--summary` — One-line summary (for status command)
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## Integration with Existing Infrastructure
|
|
490
|
+
|
|
491
|
+
### Files We Modify
|
|
492
|
+
|
|
493
|
+
1. **`src/cli/skills-cli.ts`**
|
|
494
|
+
- Add `skill show <name>` subcommand
|
|
495
|
+
- Add `skill run <name>` subcommand
|
|
496
|
+
- Add `skill verify <name>` subcommand
|
|
497
|
+
- Add `skill stats` subcommand
|
|
498
|
+
- Enhance `skills list` with status indicators
|
|
499
|
+
|
|
500
|
+
2. **`src/cli/program.ts`**
|
|
501
|
+
- Add `status` command (alias for `skills list --summary`)
|
|
502
|
+
|
|
503
|
+
### Files We Create
|
|
504
|
+
|
|
505
|
+
1. **`src/agents/skill-state.ts`**
|
|
506
|
+
- `loadSkillState(name)` / `updateSkillState(name, updates)`
|
|
507
|
+
- `getSkillTool(name)` / `getSkillVerify(name)`
|
|
508
|
+
- State file management
|
|
509
|
+
|
|
510
|
+
2. **`src/agents/skill-usage.ts`**
|
|
511
|
+
- `logUsage(entry)` — Append to log
|
|
512
|
+
- `parseUsageLog(opts)` — Parse and filter log
|
|
513
|
+
- `aggregateStats(entries)` — Compute statistics
|
|
514
|
+
|
|
515
|
+
3. **`src/agents/skill-runner.ts`**
|
|
516
|
+
- `runSkill(name, args)` — The gateway implementation
|
|
517
|
+
- `verifySkill(name)` — Run verification
|
|
518
|
+
|
|
519
|
+
### Files We Read (No Modify)
|
|
520
|
+
|
|
521
|
+
- `src/agents/skills.ts` — Use existing `hasBinary()`, `loadWorkspaceSkillEntries()`
|
|
522
|
+
- `src/agents/skills-status.ts` — Use existing requirement checking
|
|
523
|
+
- `src/commands/skills-manifest.ts` — Use existing manifest handling
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## Agent Instructions (AGENTS.md)
|
|
528
|
+
|
|
529
|
+
With the gateway in place, agent instructions become trivially simple:
|
|
530
|
+
|
|
531
|
+
```markdown
|
|
532
|
+
# Nexus Workspace
|
|
533
|
+
|
|
534
|
+
## Skills
|
|
535
|
+
|
|
536
|
+
All capabilities go through the nexus CLI:
|
|
537
|
+
|
|
538
|
+
```bash
|
|
539
|
+
# See what's available
|
|
540
|
+
nexus skills list --ready
|
|
541
|
+
|
|
542
|
+
# Get skill details
|
|
543
|
+
nexus skill show <name>
|
|
544
|
+
|
|
545
|
+
# Use a skill
|
|
546
|
+
nexus skill run <name> [-- arguments]
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
If a skill isn't configured, the CLI will tell you what's needed.
|
|
550
|
+
|
|
551
|
+
## Identity
|
|
552
|
+
|
|
553
|
+
- Your identity: Read `state/agents/{agent}/identity/IDENTITY.md`
|
|
554
|
+
- User profile: Read `state/user/identity/PROFILE.md`
|
|
555
|
+
|
|
556
|
+
## Memories
|
|
557
|
+
|
|
558
|
+
Store daily memory in `home/memory/` and curated memory in `state/agents/{agent}/identity/MEMORY.md`
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
That's the entire protocol. Everything else flows through `nexus skill run`.
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
## Cursor Integration
|
|
566
|
+
|
|
567
|
+
### .cursor/rules
|
|
568
|
+
|
|
569
|
+
The existing `nexus skills cursor-rules` command generates `.cursor/rules`. Update it to include:
|
|
570
|
+
|
|
571
|
+
```markdown
|
|
572
|
+
# Nexus Skills
|
|
573
|
+
|
|
574
|
+
When you need to use a Nexus skill, use the CLI:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
# List available skills
|
|
578
|
+
nexus skills list --ready
|
|
579
|
+
|
|
580
|
+
# Get skill details
|
|
581
|
+
nexus skill show <skill-name>
|
|
582
|
+
|
|
583
|
+
# Run a skill
|
|
584
|
+
nexus skill run <skill-name> [-- args]
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
The CLI will handle verification and logging automatically.
|
|
588
|
+
|
|
589
|
+
## Configured Skills
|
|
590
|
+
|
|
591
|
+
[Auto-generated list of configured skills with brief descriptions]
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
### Cursor Skills Directory
|
|
595
|
+
|
|
596
|
+
The existing infrastructure already symlinks skills to where Cursor can find them. No changes needed.
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Implementation Order
|
|
601
|
+
|
|
602
|
+
### Phase 1: State Infrastructure (Day 1)
|
|
603
|
+
- [ ] Create `src/agents/skill-state.ts`
|
|
604
|
+
- [ ] per-skill `state.json` schema and I/O
|
|
605
|
+
- [ ] `KNOWN_SKILL_TOOLS` mapping for initial population
|
|
606
|
+
- [ ] Auto-populate on first read / `nexus skills refresh`
|
|
607
|
+
|
|
608
|
+
### Phase 2: Usage Logging (Day 1)
|
|
609
|
+
- [ ] Create `src/agents/skill-usage.ts`
|
|
610
|
+
- [ ] `logUsage()` function
|
|
611
|
+
- [ ] `parseUsageLog()` function
|
|
612
|
+
- [ ] Log rotation logic
|
|
613
|
+
|
|
614
|
+
### Phase 3: Core Commands (Day 2)
|
|
615
|
+
- [ ] `nexus skill show <name>` in `skills-cli.ts`
|
|
616
|
+
- [ ] `nexus skill verify <name>` in `skills-cli.ts`
|
|
617
|
+
- [ ] `nexus skill run <name>` in `skills-cli.ts`
|
|
618
|
+
- [ ] Pure prompt handling
|
|
619
|
+
- [ ] Tool execution with capture
|
|
620
|
+
- [ ] First-run verification
|
|
621
|
+
- [ ] Logging integration
|
|
622
|
+
|
|
623
|
+
### Phase 4: Stats & Polish (Day 3)
|
|
624
|
+
- [ ] `nexus skill stats` command
|
|
625
|
+
- [ ] Enhance `nexus skills list` with status indicators
|
|
626
|
+
- [ ] Add `nexus status` alias
|
|
627
|
+
- [ ] Update cursor-rules generation
|
|
628
|
+
|
|
629
|
+
### Phase 5: Documentation & Testing (Day 4)
|
|
630
|
+
- [ ] Update AGENTS.md template
|
|
631
|
+
- [ ] Test with real skills (gog, eve, filesystem)
|
|
632
|
+
- [ ] Verify Cursor integration
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## Known Skill Tools (Initial Mapping)
|
|
637
|
+
|
|
638
|
+
| Skill | Tool Binary | Verify Command |
|
|
639
|
+
|-------|-------------|----------------|
|
|
640
|
+
| gog | `gog` | `gog gmail labels list --account default` |
|
|
641
|
+
| eve | `eve` | `eve messages --limit 1` |
|
|
642
|
+
| 1password | `op` | `op whoami` |
|
|
643
|
+
| tmux | `tmux` | `tmux -V` |
|
|
644
|
+
| peekaboo | `peekaboo` | `peekaboo --version` |
|
|
645
|
+
| qmd | `qmd` | `qmd status` |
|
|
646
|
+
| aix | `aix` | `aix --version` |
|
|
647
|
+
| video-frames | `ffmpeg` | `ffmpeg -version` |
|
|
648
|
+
| camsnap | `camsnap` | `camsnap --help` |
|
|
649
|
+
| brave-search | (env check) | `test -n "$BRAVE_API_KEY"` |
|
|
650
|
+
| summarize | (env check) | `test -n "$SUMMARIZE_API_KEY"` |
|
|
651
|
+
| nano-pdf | `nano-pdf` | `nano-pdf --version` |
|
|
652
|
+
| filesystem | (none) | — |
|
|
653
|
+
| computer-use | (none) | — |
|
|
654
|
+
| weather | (none) | — |
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
## Open Questions
|
|
659
|
+
|
|
660
|
+
### 1. Should `skill run` capture stderr separately?
|
|
661
|
+
|
|
662
|
+
**Current design**: Combined output (stdout + stderr to stdout)
|
|
663
|
+
**Alternative**: Keep them separate, let agent see both
|
|
664
|
+
|
|
665
|
+
**Recommendation**: Combined for simplicity. Agent can parse if needed.
|
|
666
|
+
|
|
667
|
+
### 2. How do we handle long-running skills?
|
|
668
|
+
|
|
669
|
+
**Current design**: Block until complete
|
|
670
|
+
**Alternative**: Background execution with status checking
|
|
671
|
+
|
|
672
|
+
**Recommendation**: Block for now. Add `--background` flag later if needed.
|
|
673
|
+
|
|
674
|
+
### 3. Should we truncate args in logs for privacy?
|
|
675
|
+
|
|
676
|
+
**Current design**: Log full args
|
|
677
|
+
**Alternative**: Truncate or hash sensitive-looking args
|
|
678
|
+
|
|
679
|
+
**Recommendation**: Log full args. User controls their own logs. Add `--no-log` flag for sensitive operations if needed.
|
|
680
|
+
|
|
681
|
+
### 4. How do we handle skill aliases?
|
|
682
|
+
|
|
683
|
+
Example: `gog` is also known as `google`, `gmail`, etc.
|
|
684
|
+
|
|
685
|
+
**Recommendation**: Defer. Use canonical names only for now.
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
## Success Criteria
|
|
690
|
+
|
|
691
|
+
The gateway is successful when:
|
|
692
|
+
|
|
693
|
+
1. ✅ `nexus skill run gog -- gmail messages list` executes and logs
|
|
694
|
+
2. ✅ `nexus skill run filesystem` returns the prompt
|
|
695
|
+
3. ✅ First-run verification works for unconfigured skills
|
|
696
|
+
4. ✅ `nexus skill stats` shows meaningful usage data
|
|
697
|
+
5. ✅ Agent can use skills with only "nexus skill run" instructions
|
|
698
|
+
6. ✅ Cursor integration works via cursor-rules
|
|
699
|
+
|
|
700
|
+
---
|
|
701
|
+
|
|
702
|
+
*This document is the authoritative specification. Implementation should be mechanical from here.*
|