@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.
Files changed (827) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +462 -0
  5. package/dist/agents/agent-paths.js +16 -0
  6. package/dist/agents/agent-scope.js +44 -0
  7. package/dist/agents/auth-profiles.js +626 -0
  8. package/dist/agents/bash-process-registry.js +126 -0
  9. package/dist/agents/bash-tools.js +838 -0
  10. package/dist/agents/chutes-oauth.js +47 -0
  11. package/dist/agents/clawdbot-tools.js +62 -0
  12. package/dist/agents/context.js +34 -0
  13. package/dist/agents/defaults.js +6 -0
  14. package/dist/agents/memory-search.js +80 -0
  15. package/dist/agents/model-auth.js +115 -0
  16. package/dist/agents/model-catalog.js +55 -0
  17. package/dist/agents/model-fallback.js +210 -0
  18. package/dist/agents/model-scan.js +263 -0
  19. package/dist/agents/model-selection.js +152 -0
  20. package/dist/agents/models-config.js +171 -0
  21. package/dist/agents/nexus-tools.js +46 -0
  22. package/dist/agents/pi-embedded-block-chunker.js +188 -0
  23. package/dist/agents/pi-embedded-helpers.js +139 -0
  24. package/dist/agents/pi-embedded-runner.js +932 -0
  25. package/dist/agents/pi-embedded-subscribe.js +541 -0
  26. package/dist/agents/pi-embedded-utils.js +20 -0
  27. package/dist/agents/pi-embedded.js +1 -0
  28. package/dist/agents/pi-extensions/compaction-safeguard.js +140 -0
  29. package/dist/agents/pi-tool-definition-adapter.js +17 -0
  30. package/dist/agents/pi-tools.js +510 -0
  31. package/dist/agents/pi-tools.schema.js +358 -0
  32. package/dist/agents/sandbox-paths.js +68 -0
  33. package/dist/agents/sandbox.js +667 -0
  34. package/dist/agents/shell-utils.js +53 -0
  35. package/dist/agents/skill-runner.js +224 -0
  36. package/dist/agents/skill-state.js +164 -0
  37. package/dist/agents/skill-tools.js +191 -0
  38. package/dist/agents/skill-usage.js +43 -0
  39. package/dist/agents/skills-install.js +244 -0
  40. package/dist/agents/skills-status.js +157 -0
  41. package/dist/agents/skills.js +472 -0
  42. package/dist/agents/subagent-registry.js +321 -0
  43. package/dist/agents/subagent-registry.store.js +47 -0
  44. package/dist/agents/system-prompt.js +179 -0
  45. package/dist/agents/timeout.js +26 -0
  46. package/dist/agents/tool-display.js +155 -0
  47. package/dist/agents/tool-display.json +236 -0
  48. package/dist/agents/tool-images.js +138 -0
  49. package/dist/agents/tool-policy.js +87 -0
  50. package/dist/agents/tools/agent-step.js +41 -0
  51. package/dist/agents/tools/browser-tool.js +295 -0
  52. package/dist/agents/tools/canvas-tool.js +193 -0
  53. package/dist/agents/tools/common.js +88 -0
  54. package/dist/agents/tools/cron-tool.js +141 -0
  55. package/dist/agents/tools/discord-actions-guild.js +186 -0
  56. package/dist/agents/tools/discord-actions-messaging.js +313 -0
  57. package/dist/agents/tools/discord-actions-moderation.js +70 -0
  58. package/dist/agents/tools/discord-actions.js +56 -0
  59. package/dist/agents/tools/discord-schema.js +199 -0
  60. package/dist/agents/tools/discord-tool.js +16 -0
  61. package/dist/agents/tools/gateway-tool.js +46 -0
  62. package/dist/agents/tools/gateway.js +28 -0
  63. package/dist/agents/tools/image-tool.js +140 -0
  64. package/dist/agents/tools/memory-tool.js +92 -0
  65. package/dist/agents/tools/nodes-tool.js +413 -0
  66. package/dist/agents/tools/nodes-utils.js +92 -0
  67. package/dist/agents/tools/sessions-announce-target.js +35 -0
  68. package/dist/agents/tools/sessions-helpers.js +88 -0
  69. package/dist/agents/tools/sessions-history-tool.js +137 -0
  70. package/dist/agents/tools/sessions-list-tool.js +196 -0
  71. package/dist/agents/tools/sessions-send-helpers.js +103 -0
  72. package/dist/agents/tools/sessions-send-tool.js +371 -0
  73. package/dist/agents/tools/sessions-spawn-tool.js +319 -0
  74. package/dist/agents/tools/slack-actions.js +129 -0
  75. package/dist/agents/tools/slack-schema.js +59 -0
  76. package/dist/agents/tools/slack-tool.js +16 -0
  77. package/dist/agents/tools/telegram-actions.js +159 -0
  78. package/dist/agents/tools/telegram-schema.js +28 -0
  79. package/dist/agents/tools/telegram-tool.js +16 -0
  80. package/dist/agents/tools/whatsapp-login-tool.js +63 -0
  81. package/dist/agents/usage.js +58 -0
  82. package/dist/agents/workspace.js +264 -0
  83. package/dist/auto-reply/chunk.js +177 -0
  84. package/dist/auto-reply/command-auth.js +44 -0
  85. package/dist/auto-reply/command-detection.js +22 -0
  86. package/dist/auto-reply/envelope.js +30 -0
  87. package/dist/auto-reply/group-activation.js +20 -0
  88. package/dist/auto-reply/heartbeat.js +58 -0
  89. package/dist/auto-reply/model.js +22 -0
  90. package/dist/auto-reply/reply/abort.js +14 -0
  91. package/dist/auto-reply/reply/agent-runner.js +426 -0
  92. package/dist/auto-reply/reply/bash-command.js +314 -0
  93. package/dist/auto-reply/reply/block-streaming.js +34 -0
  94. package/dist/auto-reply/reply/body.js +29 -0
  95. package/dist/auto-reply/reply/commands.js +332 -0
  96. package/dist/auto-reply/reply/directive-handling.js +626 -0
  97. package/dist/auto-reply/reply/directives.js +59 -0
  98. package/dist/auto-reply/reply/dispatch-from-config.js +23 -0
  99. package/dist/auto-reply/reply/followup-runner.js +181 -0
  100. package/dist/auto-reply/reply/groups.js +152 -0
  101. package/dist/auto-reply/reply/mentions.js +64 -0
  102. package/dist/auto-reply/reply/model-selection.js +209 -0
  103. package/dist/auto-reply/reply/queue.js +399 -0
  104. package/dist/auto-reply/reply/reply-dispatcher.js +68 -0
  105. package/dist/auto-reply/reply/reply-tags.js +26 -0
  106. package/dist/auto-reply/reply/session-updates.js +103 -0
  107. package/dist/auto-reply/reply/session.js +169 -0
  108. package/dist/auto-reply/reply/typing.js +125 -0
  109. package/dist/auto-reply/reply.js +655 -0
  110. package/dist/auto-reply/send-policy.js +28 -0
  111. package/dist/auto-reply/status.js +197 -0
  112. package/dist/auto-reply/templating.js +9 -0
  113. package/dist/auto-reply/thinking.js +49 -0
  114. package/dist/auto-reply/tokens.js +2 -0
  115. package/dist/auto-reply/tool-meta.js +74 -0
  116. package/dist/auto-reply/transcription.js +57 -0
  117. package/dist/auto-reply/types.js +1 -0
  118. package/dist/browser/bridge-server.js +37 -0
  119. package/dist/browser/cdp.js +382 -0
  120. package/dist/browser/chrome.js +432 -0
  121. package/dist/browser/client-actions-core.js +67 -0
  122. package/dist/browser/client-actions-observe.js +24 -0
  123. package/dist/browser/client-actions-types.js +1 -0
  124. package/dist/browser/client-actions.js +3 -0
  125. package/dist/browser/client-fetch.js +43 -0
  126. package/dist/browser/client.js +105 -0
  127. package/dist/browser/config.js +155 -0
  128. package/dist/browser/constants.js +5 -0
  129. package/dist/browser/profiles-service.js +124 -0
  130. package/dist/browser/profiles.js +96 -0
  131. package/dist/browser/pw-ai.js +2 -0
  132. package/dist/browser/pw-session.js +144 -0
  133. package/dist/browser/pw-tools-core.js +363 -0
  134. package/dist/browser/routes/agent.js +535 -0
  135. package/dist/browser/routes/basic.js +155 -0
  136. package/dist/browser/routes/index.js +8 -0
  137. package/dist/browser/routes/tabs.js +105 -0
  138. package/dist/browser/routes/utils.js +62 -0
  139. package/dist/browser/screenshot.js +40 -0
  140. package/dist/browser/server-context.js +377 -0
  141. package/dist/browser/server.js +81 -0
  142. package/dist/browser/target-id.js +18 -0
  143. package/dist/browser/trash.js +21 -0
  144. package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
  145. package/dist/canvas-host/a2ui/index.html +246 -0
  146. package/dist/canvas-host/a2ui.js +187 -0
  147. package/dist/canvas-host/server.js +382 -0
  148. package/dist/channel-web.js +8 -0
  149. package/dist/cli/browser-cli-actions-input.js +459 -0
  150. package/dist/cli/browser-cli-actions-observe.js +56 -0
  151. package/dist/cli/browser-cli-examples.js +31 -0
  152. package/dist/cli/browser-cli-inspect.js +97 -0
  153. package/dist/cli/browser-cli-manage.js +286 -0
  154. package/dist/cli/browser-cli-shared.js +1 -0
  155. package/dist/cli/browser-cli.js +26 -0
  156. package/dist/cli/canvas-cli.js +416 -0
  157. package/dist/cli/cloud-cli.js +336 -0
  158. package/dist/cli/credential-cli.js +227 -0
  159. package/dist/cli/cron-cli.js +454 -0
  160. package/dist/cli/deps.js +17 -0
  161. package/dist/cli/dns-cli.js +180 -0
  162. package/dist/cli/gateway-cli.js +665 -0
  163. package/dist/cli/gateway-rpc.js +20 -0
  164. package/dist/cli/hooks-cli.js +135 -0
  165. package/dist/cli/memory-cli.js +101 -0
  166. package/dist/cli/models-cli.js +248 -0
  167. package/dist/cli/nodes-camera.js +57 -0
  168. package/dist/cli/nodes-canvas.js +26 -0
  169. package/dist/cli/nodes-cli.js +946 -0
  170. package/dist/cli/nodes-screen.js +37 -0
  171. package/dist/cli/pairing-cli.js +100 -0
  172. package/dist/cli/parse-duration.js +20 -0
  173. package/dist/cli/plugins-cli.js +158 -0
  174. package/dist/cli/ports.js +97 -0
  175. package/dist/cli/profile.js +81 -0
  176. package/dist/cli/program.js +162 -0
  177. package/dist/cli/prompt.js +19 -0
  178. package/dist/cli/run-main.js +48 -0
  179. package/dist/cli/skills-cli.js +132 -0
  180. package/dist/cli/skills-hub-cli.js +1093 -0
  181. package/dist/cli/telegram-cli.js +56 -0
  182. package/dist/cli/tool-connector-cli.js +118 -0
  183. package/dist/cli/tui-cli.js +35 -0
  184. package/dist/cli/upstream-sync-cli.js +2833 -0
  185. package/dist/cli/usage-cli.js +24 -0
  186. package/dist/cli/wait.js +8 -0
  187. package/dist/commands/agent-via-gateway.js +115 -0
  188. package/dist/commands/agent.js +665 -0
  189. package/dist/commands/antigravity-oauth.js +327 -0
  190. package/dist/commands/auth-choice-options.js +80 -0
  191. package/dist/commands/auth-choice.js +134 -0
  192. package/dist/commands/auth-token.js +31 -0
  193. package/dist/commands/bootstrap-preset.js +214 -0
  194. package/dist/commands/capabilities.js +36 -0
  195. package/dist/commands/chutes-oauth.js +144 -0
  196. package/dist/commands/claude-md.js +137 -0
  197. package/dist/commands/config-view.js +11 -0
  198. package/dist/commands/configure.js +648 -0
  199. package/dist/commands/credential.js +236 -0
  200. package/dist/commands/cursor-rules.js +230 -0
  201. package/dist/commands/doctor-state-migrations.js +358 -0
  202. package/dist/commands/doctor-ui.js +113 -0
  203. package/dist/commands/doctor.js +673 -0
  204. package/dist/commands/health.js +112 -0
  205. package/dist/commands/identity.js +54 -0
  206. package/dist/commands/init.js +167 -0
  207. package/dist/commands/models/aliases.js +85 -0
  208. package/dist/commands/models/fallbacks.js +123 -0
  209. package/dist/commands/models/image-fallbacks.js +123 -0
  210. package/dist/commands/models/list.js +347 -0
  211. package/dist/commands/models/scan.js +271 -0
  212. package/dist/commands/models/set-image.js +27 -0
  213. package/dist/commands/models/set.js +27 -0
  214. package/dist/commands/models/shared.js +73 -0
  215. package/dist/commands/models.js +7 -0
  216. package/dist/commands/onboard-auth.js +101 -0
  217. package/dist/commands/onboard-channels.js +814 -0
  218. package/dist/commands/onboard-eve-identity.js +98 -0
  219. package/dist/commands/onboard-github.js +153 -0
  220. package/dist/commands/onboard-helpers.js +303 -0
  221. package/dist/commands/onboard-interactive.js +17 -0
  222. package/dist/commands/onboard-non-interactive.js +228 -0
  223. package/dist/commands/onboard-providers.js +829 -0
  224. package/dist/commands/onboard-quickstart.js +185 -0
  225. package/dist/commands/onboard-remote.js +120 -0
  226. package/dist/commands/onboard-skills.js +148 -0
  227. package/dist/commands/onboard-types.js +1 -0
  228. package/dist/commands/onboard.js +19 -0
  229. package/dist/commands/openai-codex-model-default.js +38 -0
  230. package/dist/commands/poll.js +64 -0
  231. package/dist/commands/quest.js +27 -0
  232. package/dist/commands/reset.js +61 -0
  233. package/dist/commands/send.js +124 -0
  234. package/dist/commands/sessions-ingest.js +359 -0
  235. package/dist/commands/sessions.js +212 -0
  236. package/dist/commands/setup.js +59 -0
  237. package/dist/commands/signal-install.js +135 -0
  238. package/dist/commands/skills-manifest.js +235 -0
  239. package/dist/commands/status.js +139 -0
  240. package/dist/commands/suggestions.js +54 -0
  241. package/dist/commands/systemd-linger.js +71 -0
  242. package/dist/commands/update.js +16 -0
  243. package/dist/commands/usage-upload.js +27 -0
  244. package/dist/config/config.js +6 -0
  245. package/dist/config/defaults.js +140 -0
  246. package/dist/config/group-policy.js +49 -0
  247. package/dist/config/includes.js +183 -0
  248. package/dist/config/io.js +188 -0
  249. package/dist/config/legacy-migrate.js +13 -0
  250. package/dist/config/legacy.js +425 -0
  251. package/dist/config/paths.js +82 -0
  252. package/dist/config/port-defaults.js +32 -0
  253. package/dist/config/schema.js +173 -0
  254. package/dist/config/sessions.js +611 -0
  255. package/dist/config/talk.js +31 -0
  256. package/dist/config/types.js +1 -0
  257. package/dist/config/validation.js +29 -0
  258. package/dist/config/zod-schema.js +1110 -0
  259. package/dist/control-ui/assets/index-D8Q5AI4D.js +2393 -0
  260. package/dist/control-ui/assets/index-D8Q5AI4D.js.map +1 -0
  261. package/dist/control-ui/assets/index-g06q5Xc3.css +1 -0
  262. package/dist/control-ui/favicon.ico +0 -0
  263. package/dist/control-ui/index.html +16 -0
  264. package/dist/cron/isolated-agent.js +529 -0
  265. package/dist/cron/normalize.js +73 -0
  266. package/dist/cron/parse.js +24 -0
  267. package/dist/cron/run-log.js +72 -0
  268. package/dist/cron/schedule.js +24 -0
  269. package/dist/cron/service.js +471 -0
  270. package/dist/cron/store.js +43 -0
  271. package/dist/cron/types.js +1 -0
  272. package/dist/daemon/constants.js +10 -0
  273. package/dist/daemon/launchd.js +295 -0
  274. package/dist/daemon/legacy.js +63 -0
  275. package/dist/daemon/program-args.js +141 -0
  276. package/dist/daemon/schtasks.js +269 -0
  277. package/dist/daemon/service.js +69 -0
  278. package/dist/daemon/systemd.js +332 -0
  279. package/dist/discord/index.js +2 -0
  280. package/dist/discord/monitor.js +1089 -0
  281. package/dist/discord/probe.js +54 -0
  282. package/dist/discord/send.js +652 -0
  283. package/dist/discord/token.js +8 -0
  284. package/dist/entry.js +16 -0
  285. package/dist/gateway/auth.js +121 -0
  286. package/dist/gateway/call.js +103 -0
  287. package/dist/gateway/chat-attachments.js +41 -0
  288. package/dist/gateway/client.js +180 -0
  289. package/dist/gateway/config-reload.js +274 -0
  290. package/dist/gateway/control-ui.js +184 -0
  291. package/dist/gateway/hooks-mapping.js +282 -0
  292. package/dist/gateway/hooks.js +168 -0
  293. package/dist/gateway/net.js +29 -0
  294. package/dist/gateway/protocol/index.js +62 -0
  295. package/dist/gateway/protocol/schema.js +577 -0
  296. package/dist/gateway/server-bridge-subscriptions.js +93 -0
  297. package/dist/gateway/server-bridge.js +1066 -0
  298. package/dist/gateway/server-browser.js +11 -0
  299. package/dist/gateway/server-channels.js +680 -0
  300. package/dist/gateway/server-chat.js +159 -0
  301. package/dist/gateway/server-constants.js +8 -0
  302. package/dist/gateway/server-discovery.js +62 -0
  303. package/dist/gateway/server-http.js +165 -0
  304. package/dist/gateway/server-methods/agent-job.js +114 -0
  305. package/dist/gateway/server-methods/agent.js +254 -0
  306. package/dist/gateway/server-methods/channels.js +239 -0
  307. package/dist/gateway/server-methods/chat.js +207 -0
  308. package/dist/gateway/server-methods/config.js +50 -0
  309. package/dist/gateway/server-methods/connect.js +6 -0
  310. package/dist/gateway/server-methods/cron.js +89 -0
  311. package/dist/gateway/server-methods/health.js +28 -0
  312. package/dist/gateway/server-methods/models.js +16 -0
  313. package/dist/gateway/server-methods/nodes.js +294 -0
  314. package/dist/gateway/server-methods/providers.js +257 -0
  315. package/dist/gateway/server-methods/send.js +254 -0
  316. package/dist/gateway/server-methods/sessions.js +382 -0
  317. package/dist/gateway/server-methods/skills.js +83 -0
  318. package/dist/gateway/server-methods/system.js +118 -0
  319. package/dist/gateway/server-methods/talk.js +22 -0
  320. package/dist/gateway/server-methods/types.js +1 -0
  321. package/dist/gateway/server-methods/voicewake.js +30 -0
  322. package/dist/gateway/server-methods/web.js +81 -0
  323. package/dist/gateway/server-methods/wizard.js +100 -0
  324. package/dist/gateway/server-methods.js +53 -0
  325. package/dist/gateway/server-providers.js +687 -0
  326. package/dist/gateway/server-shared.js +1 -0
  327. package/dist/gateway/server-utils.js +35 -0
  328. package/dist/gateway/server.js +1478 -0
  329. package/dist/gateway/session-utils.js +355 -0
  330. package/dist/gateway/ws-log.js +343 -0
  331. package/dist/gateway/ws-logging.js +8 -0
  332. package/dist/globals.js +41 -0
  333. package/dist/hooks/gmail-ops.js +236 -0
  334. package/dist/hooks/gmail-setup-utils.js +278 -0
  335. package/dist/hooks/gmail-watcher.js +190 -0
  336. package/dist/hooks/gmail.js +177 -0
  337. package/dist/imessage/client.js +165 -0
  338. package/dist/imessage/index.js +3 -0
  339. package/dist/imessage/monitor.js +365 -0
  340. package/dist/imessage/probe.js +26 -0
  341. package/dist/imessage/send.js +83 -0
  342. package/dist/imessage/targets.js +176 -0
  343. package/dist/index.js +55 -0
  344. package/dist/infra/agent-events.js +46 -0
  345. package/dist/infra/binaries.js +9 -0
  346. package/dist/infra/bonjour-discovery.js +163 -0
  347. package/dist/infra/bonjour.js +200 -0
  348. package/dist/infra/bridge/server.js +564 -0
  349. package/dist/infra/canvas-host-url.js +54 -0
  350. package/dist/infra/channel-summary.js +78 -0
  351. package/dist/infra/control-ui-assets.js +112 -0
  352. package/dist/infra/dotenv.js +15 -0
  353. package/dist/infra/env.js +8 -0
  354. package/dist/infra/errors.js +28 -0
  355. package/dist/infra/event-log.js +251 -0
  356. package/dist/infra/gateway-lock.js +8 -0
  357. package/dist/infra/git-commit.js +91 -0
  358. package/dist/infra/heartbeat-events.js +21 -0
  359. package/dist/infra/heartbeat-runner.js +458 -0
  360. package/dist/infra/heartbeat-wake.js +61 -0
  361. package/dist/infra/is-main.js +37 -0
  362. package/dist/infra/json-file.js +21 -0
  363. package/dist/infra/machine-name.js +40 -0
  364. package/dist/infra/nexus-root.js +56 -0
  365. package/dist/infra/node-pairing.js +212 -0
  366. package/dist/infra/path-env.js +93 -0
  367. package/dist/infra/ports.js +87 -0
  368. package/dist/infra/provider-summary.js +80 -0
  369. package/dist/infra/provider-usage.auth.js +189 -0
  370. package/dist/infra/provider-usage.fetch.claude.js +129 -0
  371. package/dist/infra/provider-usage.fetch.codex.js +62 -0
  372. package/dist/infra/provider-usage.fetch.copilot.js +42 -0
  373. package/dist/infra/provider-usage.fetch.gemini.js +57 -0
  374. package/dist/infra/provider-usage.fetch.js +6 -0
  375. package/dist/infra/provider-usage.fetch.minimax.js +214 -0
  376. package/dist/infra/provider-usage.fetch.shared.js +11 -0
  377. package/dist/infra/provider-usage.fetch.zai.js +62 -0
  378. package/dist/infra/provider-usage.format.js +77 -0
  379. package/dist/infra/provider-usage.js +145 -0
  380. package/dist/infra/provider-usage.load.js +54 -0
  381. package/dist/infra/provider-usage.shared.js +19 -0
  382. package/dist/infra/provider-usage.types.js +1 -0
  383. package/dist/infra/restart.js +29 -0
  384. package/dist/infra/retry.js +16 -0
  385. package/dist/infra/runtime-guard.js +59 -0
  386. package/dist/infra/shell-env.js +88 -0
  387. package/dist/infra/system-events.js +71 -0
  388. package/dist/infra/system-presence.js +217 -0
  389. package/dist/infra/tailnet.js +46 -0
  390. package/dist/infra/tailscale.js +149 -0
  391. package/dist/infra/unhandled-rejections.js +19 -0
  392. package/dist/infra/usage-suggestions.js +241 -0
  393. package/dist/infra/usage-upload.js +290 -0
  394. package/dist/infra/voicewake.js +78 -0
  395. package/dist/infra/widearea-dns.js +123 -0
  396. package/dist/infra/ws.js +13 -0
  397. package/dist/logger.js +52 -0
  398. package/dist/logging.js +506 -0
  399. package/dist/macos/gateway-daemon.js +145 -0
  400. package/dist/macos/relay.js +49 -0
  401. package/dist/media/constants.js +33 -0
  402. package/dist/media/host.js +42 -0
  403. package/dist/media/image-ops.js +119 -0
  404. package/dist/media/mime.js +123 -0
  405. package/dist/media/parse.js +83 -0
  406. package/dist/media/server.js +64 -0
  407. package/dist/media/store.js +139 -0
  408. package/dist/polls.js +43 -0
  409. package/dist/process/command-queue.js +97 -0
  410. package/dist/process/exec.js +75 -0
  411. package/dist/provider-web.js +8 -0
  412. package/dist/providers/github-copilot-auth.js +123 -0
  413. package/dist/providers/github-copilot-models.js +35 -0
  414. package/dist/providers/github-copilot-token.js +11 -0
  415. package/dist/providers/location.js +48 -0
  416. package/dist/providers/web/index.js +2 -0
  417. package/dist/runtime.js +8 -0
  418. package/dist/sessions/level-overrides.js +9 -0
  419. package/dist/sessions/send-policy.js +68 -0
  420. package/dist/signal/client.js +134 -0
  421. package/dist/signal/daemon.js +69 -0
  422. package/dist/signal/index.js +3 -0
  423. package/dist/signal/monitor.js +411 -0
  424. package/dist/signal/probe.js +46 -0
  425. package/dist/signal/send.js +91 -0
  426. package/dist/slack/actions.js +97 -0
  427. package/dist/slack/index.js +5 -0
  428. package/dist/slack/monitor.js +1270 -0
  429. package/dist/slack/probe.js +47 -0
  430. package/dist/slack/send.js +131 -0
  431. package/dist/slack/token.js +10 -0
  432. package/dist/telegram/allowed-updates.js +8 -0
  433. package/dist/telegram/bot.js +724 -0
  434. package/dist/telegram/download.js +34 -0
  435. package/dist/telegram/index.js +4 -0
  436. package/dist/telegram/monitor.js +47 -0
  437. package/dist/telegram/pairing-store.js +77 -0
  438. package/dist/telegram/probe.js +63 -0
  439. package/dist/telegram/proxy.js +9 -0
  440. package/dist/telegram/reaction-level.js +45 -0
  441. package/dist/telegram/send.js +151 -0
  442. package/dist/telegram/sent-message-cache.js +65 -0
  443. package/dist/telegram/token.js +30 -0
  444. package/dist/telegram/update-offset-store.js +61 -0
  445. package/dist/telegram/webhook-set.js +12 -0
  446. package/dist/telegram/webhook.js +56 -0
  447. package/dist/tui/commands.js +87 -0
  448. package/dist/tui/components/assistant-message.js +16 -0
  449. package/dist/tui/components/chat-log.js +92 -0
  450. package/dist/tui/components/custom-editor.js +55 -0
  451. package/dist/tui/components/selectors.js +8 -0
  452. package/dist/tui/components/tool-execution.js +111 -0
  453. package/dist/tui/components/user-message.js +17 -0
  454. package/dist/tui/gateway-chat.js +140 -0
  455. package/dist/tui/theme/theme.js +80 -0
  456. package/dist/tui/tui.js +708 -0
  457. package/dist/utils.js +153 -0
  458. package/dist/version.js +18 -0
  459. package/dist/web/accounts.js +86 -0
  460. package/dist/web/active-listener.js +25 -0
  461. package/dist/web/auto-reply.js +1256 -0
  462. package/dist/web/inbound.js +649 -0
  463. package/dist/web/login-qr.js +230 -0
  464. package/dist/web/login.js +71 -0
  465. package/dist/web/media.js +175 -0
  466. package/dist/web/outbound.js +102 -0
  467. package/dist/web/qr-image.js +97 -0
  468. package/dist/web/reconnect.js +60 -0
  469. package/dist/web/session.js +370 -0
  470. package/dist/wizard/clack-prompter.js +56 -0
  471. package/dist/wizard/onboarding.js +620 -0
  472. package/dist/wizard/prompts.js +6 -0
  473. package/dist/wizard/session.js +203 -0
  474. package/docs/AGENTS.default.md +116 -0
  475. package/docs/CAPABILITIES.md +444 -0
  476. package/docs/CNAME +1 -0
  477. package/docs/NEXUS_CORE_REWRITE_SPEC.md +226 -0
  478. package/docs/RELEASING.md +69 -0
  479. package/docs/_config.yml +53 -0
  480. package/docs/_layouts/default.html +145 -0
  481. package/docs/agent-assisted-install.md +95 -0
  482. package/docs/agent-loop.md +61 -0
  483. package/docs/agent-send.md +21 -0
  484. package/docs/agent.md +108 -0
  485. package/docs/android.md +133 -0
  486. package/docs/architecture.md +114 -0
  487. package/docs/assets/markdown.css +133 -0
  488. package/docs/assets/pixel-lobster.svg +60 -0
  489. package/docs/assets/terminal.css +470 -0
  490. package/docs/assets/theme.js +55 -0
  491. package/docs/audio.md +48 -0
  492. package/docs/automation/nexus-sync.md +371 -0
  493. package/docs/background-process.md +74 -0
  494. package/docs/bash.md +32 -0
  495. package/docs/bedrock.md +71 -0
  496. package/docs/bonjour.md +159 -0
  497. package/docs/browser-linux-troubleshooting.md +114 -0
  498. package/docs/browser.md +293 -0
  499. package/docs/bun.md +56 -0
  500. package/docs/camera.md +152 -0
  501. package/docs/clawd.md +212 -0
  502. package/docs/concepts/usage-tracking.md +29 -0
  503. package/docs/configuration.md +1666 -0
  504. package/docs/control-ui.md +83 -0
  505. package/docs/cron.md +385 -0
  506. package/docs/dashboard.md +17 -0
  507. package/docs/device-models.md +46 -0
  508. package/docs/discord.md +308 -0
  509. package/docs/discovery.md +112 -0
  510. package/docs/docker.md +258 -0
  511. package/docs/docs.json +105 -0
  512. package/docs/doctor.md +68 -0
  513. package/docs/elevated.md +31 -0
  514. package/docs/faq.md +736 -0
  515. package/docs/feature-inventory/overview.md +141 -0
  516. package/docs/feature-inventory/rollout-checklist.md +53 -0
  517. package/docs/feature-inventory/test-matrix.md +87 -0
  518. package/docs/feature-inventory.md +9 -0
  519. package/docs/gateway/configuration-examples.md +221 -0
  520. package/docs/gateway/configuration.md +172 -0
  521. package/docs/gateway/cron.md +61 -0
  522. package/docs/gateway/heartbeat.md +207 -0
  523. package/docs/gateway/pairing.md +109 -0
  524. package/docs/gateway-lock.md +28 -0
  525. package/docs/gateway.md +227 -0
  526. package/docs/gmail-pubsub.md +191 -0
  527. package/docs/grammy.md +27 -0
  528. package/docs/group-messages.md +73 -0
  529. package/docs/groups.md +130 -0
  530. package/docs/health.md +28 -0
  531. package/docs/heartbeat.md +73 -0
  532. package/docs/home-userspace.md +277 -0
  533. package/docs/hubs.md +148 -0
  534. package/docs/images.md +51 -0
  535. package/docs/imessage.md +94 -0
  536. package/docs/index.md +196 -0
  537. package/docs/ios.md +372 -0
  538. package/docs/linux.md +11 -0
  539. package/docs/location-command.md +95 -0
  540. package/docs/location.md +46 -0
  541. package/docs/logging.md +110 -0
  542. package/docs/lore.md +131 -0
  543. package/docs/mac/bun.md +133 -0
  544. package/docs/mac/canvas.md +161 -0
  545. package/docs/mac/child-process.md +72 -0
  546. package/docs/mac/dev-setup.md +81 -0
  547. package/docs/mac/health.md +28 -0
  548. package/docs/mac/icon.md +26 -0
  549. package/docs/mac/logging.md +51 -0
  550. package/docs/mac/menu-bar.md +69 -0
  551. package/docs/mac/peekaboo.md +170 -0
  552. package/docs/mac/permissions.md +40 -0
  553. package/docs/mac/release.md +76 -0
  554. package/docs/mac/remote.md +57 -0
  555. package/docs/mac/signing.md +41 -0
  556. package/docs/mac/skills.md +27 -0
  557. package/docs/mac/voice-overlay.md +52 -0
  558. package/docs/mac/voicewake.md +56 -0
  559. package/docs/mac/webchat.md +27 -0
  560. package/docs/mac/xpc.md +40 -0
  561. package/docs/macos.md +104 -0
  562. package/docs/model-failover.md +75 -0
  563. package/docs/models.md +91 -0
  564. package/docs/multi-agent.md +74 -0
  565. package/docs/nix.md +95 -0
  566. package/docs/nodes.md +157 -0
  567. package/docs/onboarding-config-protocol.md +34 -0
  568. package/docs/onboarding.md +189 -0
  569. package/docs/pairing.md +85 -0
  570. package/docs/plans/cron-add-hardening.md +72 -0
  571. package/docs/plans/group-policy-hardening.md +121 -0
  572. package/docs/poll.md +52 -0
  573. package/docs/prereqs.md +67 -0
  574. package/docs/presence.md +133 -0
  575. package/docs/proposals/model-config.md +147 -0
  576. package/docs/provider-routing.md +25 -0
  577. package/docs/queue.md +78 -0
  578. package/docs/reference/templates/AGENTS.md +164 -0
  579. package/docs/remote-gateway-readme.md +153 -0
  580. package/docs/remote.md +61 -0
  581. package/docs/research/memory.md +227 -0
  582. package/docs/rpc.md +35 -0
  583. package/docs/security.md +200 -0
  584. package/docs/session-ingestion.md +119 -0
  585. package/docs/session-tool.md +154 -0
  586. package/docs/session.md +85 -0
  587. package/docs/sessions.md +8 -0
  588. package/docs/setup.md +131 -0
  589. package/docs/showcase.md +37 -0
  590. package/docs/signal.md +122 -0
  591. package/docs/skills-config.md +58 -0
  592. package/docs/skills.md +153 -0
  593. package/docs/slack.md +221 -0
  594. package/docs/subagents.md +72 -0
  595. package/docs/tailscale.md +71 -0
  596. package/docs/talk.md +79 -0
  597. package/docs/telegram.md +96 -0
  598. package/docs/templates/AGENTS.md +286 -0
  599. package/docs/templates/BOOTSTRAP.md +35 -0
  600. package/docs/templates/IDENTITY.md +17 -0
  601. package/docs/templates/PROFILE.md +14 -0
  602. package/docs/templates/SOUL.md +41 -0
  603. package/docs/templates/TOOLS.md +41 -0
  604. package/docs/templates/USER.md +8 -0
  605. package/docs/test.md +43 -0
  606. package/docs/testing-onboarding-quickstart.md +76 -0
  607. package/docs/testing-philosophy.md +211 -0
  608. package/docs/thinking.md +46 -0
  609. package/docs/timezone.md +40 -0
  610. package/docs/tools.md +346 -0
  611. package/docs/troubleshooting.md +257 -0
  612. package/docs/tui.md +71 -0
  613. package/docs/typebox.md +42 -0
  614. package/docs/updating.md +138 -0
  615. package/docs/usage-cloud-aggregation-spec.md +133 -0
  616. package/docs/usage-suggestions-pipeline.md +126 -0
  617. package/docs/voicewake.md +61 -0
  618. package/docs/web.md +115 -0
  619. package/docs/webchat.md +34 -0
  620. package/docs/webhook.md +132 -0
  621. package/docs/whatsapp-clawd.jpg +0 -0
  622. package/docs/whatsapp.md +170 -0
  623. package/docs/windows.md +11 -0
  624. package/docs/wizard.md +167 -0
  625. package/package.json +209 -0
  626. package/skills/1password/SKILL.md +54 -0
  627. package/skills/1password/docs/setup.md +85 -0
  628. package/skills/1password/docs/troubleshooting.md +63 -0
  629. package/skills/1password/references/cli-examples.md +29 -0
  630. package/skills/1password/references/get-started.md +17 -0
  631. package/skills/agent-browser/SKILL.md +450 -0
  632. package/skills/agent-browser/docs/browser-use-eval.md +95 -0
  633. package/skills/agent-browser/docs/first-tests.md +261 -0
  634. package/skills/agent-browser/docs/wordle-nyt-eval.js +32 -0
  635. package/skills/aix/SKILL.md +93 -0
  636. package/skills/aix/docs/embeddings.md +40 -0
  637. package/skills/aix/docs/setup.md +58 -0
  638. package/skills/aix/docs/troubleshooting.md +41 -0
  639. package/skills/aix/references/sql.md +48 -0
  640. package/skills/apple-notes/SKILL.md +50 -0
  641. package/skills/apple-reminders/SKILL.md +67 -0
  642. package/skills/bear-notes/SKILL.md +79 -0
  643. package/skills/bird/SKILL.md +32 -0
  644. package/skills/bird/docs/auth.md +31 -0
  645. package/skills/bird/docs/troubleshooting.md +31 -0
  646. package/skills/blogwatcher/SKILL.md +46 -0
  647. package/skills/blucli/SKILL.md +27 -0
  648. package/skills/brave-search/SKILL.md +36 -0
  649. package/skills/brave-search/docs/setup.md +40 -0
  650. package/skills/brave-search/docs/troubleshooting.md +37 -0
  651. package/skills/brave-search/docs/usage.md +28 -0
  652. package/skills/brave-search/scripts/content.mjs +53 -0
  653. package/skills/brave-search/scripts/search.mjs +79 -0
  654. package/skills/browser-use-agent-sdk/SKILL.md +90 -0
  655. package/skills/camsnap/SKILL.md +25 -0
  656. package/skills/clawdhub/SKILL.md +53 -0
  657. package/skills/coding-agent/SKILL.md +274 -0
  658. package/skills/comms/SKILL.md +249 -0
  659. package/skills/comms/docs/adapters.md +54 -0
  660. package/skills/comms/docs/setup.md +56 -0
  661. package/skills/comms/docs/troubleshooting.md +44 -0
  662. package/skills/comms/references/schema.md +49 -0
  663. package/skills/computer-use/SKILL.md +204 -0
  664. package/skills/computer-use/docs/open-interpreter.md +26 -0
  665. package/skills/computer-use/docs/peekaboo.md +26 -0
  666. package/skills/computer-use/docs/setup.md +47 -0
  667. package/skills/computer-use/docs/troubleshooting.md +33 -0
  668. package/skills/discord/SKILL.md +370 -0
  669. package/skills/eightctl/SKILL.md +29 -0
  670. package/skills/eve/SKILL.md +215 -0
  671. package/skills/eve/docs/dual-account.md +84 -0
  672. package/skills/eve/docs/intelligence.md +58 -0
  673. package/skills/eve/docs/setup.md +60 -0
  674. package/skills/eve/docs/troubleshooting.md +54 -0
  675. package/skills/eve/scripts/setup-dual-account.sh +125 -0
  676. package/skills/filesystem/SKILL.md +217 -0
  677. package/skills/food-order/SKILL.md +41 -0
  678. package/skills/gemini/SKILL.md +23 -0
  679. package/skills/gh/SKILL.md +22 -0
  680. package/skills/gh/docs/usage.md +41 -0
  681. package/skills/gifgrep/SKILL.md +47 -0
  682. package/skills/github/SKILL.md +26 -0
  683. package/skills/github/docs/setup.md +21 -0
  684. package/skills/github/docs/troubleshooting.md +24 -0
  685. package/skills/gog/SKILL.md +104 -0
  686. package/skills/gog/docs/portability.md +94 -0
  687. package/skills/gog/docs/setup.md +76 -0
  688. package/skills/gog/docs/troubleshooting.md +94 -0
  689. package/skills/gog/scripts/cdp/README.md +90 -0
  690. package/skills/gog/scripts/cdp/add_test_users.py +69 -0
  691. package/skills/gog/scripts/cdp/auth_add_accounts.py +209 -0
  692. package/skills/gog/scripts/cdp/auth_add_accounts_manual.py +206 -0
  693. package/skills/gog/scripts/cdp/create_oauth_client.py +165 -0
  694. package/skills/gog/scripts/cdp/launch_cdp_chrome.sh +58 -0
  695. package/skills/google-oauth/SKILL.md +94 -0
  696. package/skills/goplaces/SKILL.md +30 -0
  697. package/skills/imsg/SKILL.md +25 -0
  698. package/skills/json-render/SKILL.md +154 -0
  699. package/skills/json-render/assets/components/README.md +21 -0
  700. package/skills/json-render/assets/components/catalog.ts +78 -0
  701. package/skills/json-render/assets/components/registry.tsx +172 -0
  702. package/skills/json-render/assets/demo/App.css +397 -0
  703. package/skills/json-render/assets/demo/App.tsx +897 -0
  704. package/skills/json-render/assets/demo/README.md +22 -0
  705. package/skills/json-render/assets/demo/catalog.ts +78 -0
  706. package/skills/json-render/assets/demo/data/nexus-core.json +31 -0
  707. package/skills/json-render/assets/demo/index.css +27 -0
  708. package/skills/json-render/assets/demo/registry.tsx +150 -0
  709. package/skills/json-render/docs/nexus-state-demo.md +84 -0
  710. package/skills/json-render/docs/shadcn-preset.md +33 -0
  711. package/skills/json-render/scripts/create-vite-demo.sh +45 -0
  712. package/skills/json-render/scripts/llm-server/README.md +33 -0
  713. package/skills/json-render/scripts/llm-server/catalog.ts +78 -0
  714. package/skills/json-render/scripts/llm-server/package-lock.json +702 -0
  715. package/skills/json-render/scripts/llm-server/package.json +18 -0
  716. package/skills/json-render/scripts/llm-server/server.ts +285 -0
  717. package/skills/local-places/SERVER_README.md +101 -0
  718. package/skills/local-places/SKILL.md +91 -0
  719. package/skills/local-places/pyproject.toml +27 -0
  720. package/skills/local-places/src/local_places/__init__.py +2 -0
  721. package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  722. package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  723. package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  724. package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  725. package/skills/local-places/src/local_places/google_places.py +314 -0
  726. package/skills/local-places/src/local_places/main.py +65 -0
  727. package/skills/local-places/src/local_places/schemas.py +107 -0
  728. package/skills/mcporter/SKILL.md +38 -0
  729. package/skills/model-usage/SKILL.md +45 -0
  730. package/skills/model-usage/references/codexbar-cli.md +28 -0
  731. package/skills/model-usage/scripts/model_usage.py +310 -0
  732. package/skills/nano-banana-pro/SKILL.md +30 -0
  733. package/skills/nano-banana-pro/scripts/generate_image.py +169 -0
  734. package/skills/nano-pdf/SKILL.md +20 -0
  735. package/skills/nexus-cloud/SKILL.md +53 -0
  736. package/skills/nexus-cloud/docs/security.md +24 -0
  737. package/skills/nexus-cloud/docs/setup.md +51 -0
  738. package/skills/nexus-cloud/docs/troubleshooting.md +28 -0
  739. package/skills/notion/SKILL.md +156 -0
  740. package/skills/obsidian/SKILL.md +55 -0
  741. package/skills/onboarding/SKILL.md +515 -0
  742. package/skills/onboarding/docs/CAPABILITIES.md +444 -0
  743. package/skills/onboarding/docs/CAPABILITY_TAXONOMY.md +608 -0
  744. package/skills/onboarding/docs/CLI_GRAMMAR.md +797 -0
  745. package/skills/onboarding/docs/CLI_GRAMMAR_CREDENTIALS.md +632 -0
  746. package/skills/onboarding/docs/CLI_GRAMMAR_ONBOARDING.md +815 -0
  747. package/skills/onboarding/docs/CLI_GRAMMAR_SKILLS.md +449 -0
  748. package/skills/onboarding/docs/DOCUMENTATION_OVERVIEW.md +290 -0
  749. package/skills/onboarding/docs/ENTITY_MODEL.md +582 -0
  750. package/skills/onboarding/docs/GOAL_STATE_ARCHITECTURE.md +395 -0
  751. package/skills/onboarding/docs/NEXUS_SYSTEM_OVERVIEW.md +476 -0
  752. package/skills/onboarding/docs/SKILLS_HUB_SPEC.md +477 -0
  753. package/skills/onboarding/docs/SKILLS_SPECIFICATION.md +947 -0
  754. package/skills/onboarding/docs/SKILL_GATEWAY_DESIGN.md +702 -0
  755. package/skills/onboarding/docs/SKILL_GATEWAY_PRD.md +278 -0
  756. package/skills/onboarding/docs/SKILL_INVENTORY.md +266 -0
  757. package/skills/onboarding/docs/STATE_ARCHITECTURE.md +547 -0
  758. package/skills/onboarding/docs/TROUBLESHOOTING.md +363 -0
  759. package/skills/onboarding/docs/USER_JOURNEY.md +797 -0
  760. package/skills/onboarding/docs/WOW_MOMENTS.md +232 -0
  761. package/skills/onboarding/docs/agent-apple-id.md +289 -0
  762. package/skills/onboarding/docs/skill-deep-dives/1password.md +367 -0
  763. package/skills/onboarding/docs/skill-deep-dives/TEMPLATE.md +197 -0
  764. package/skills/onboarding/docs/skill-deep-dives/aix.md +498 -0
  765. package/skills/onboarding/docs/skill-deep-dives/bird.md +357 -0
  766. package/skills/onboarding/docs/skill-deep-dives/brave-search.md +601 -0
  767. package/skills/onboarding/docs/skill-deep-dives/comms.md +607 -0
  768. package/skills/onboarding/docs/skill-deep-dives/computer-use.md +599 -0
  769. package/skills/onboarding/docs/skill-deep-dives/cron-and-heartbeat.md +576 -0
  770. package/skills/onboarding/docs/skill-deep-dives/eve.md +711 -0
  771. package/skills/onboarding/docs/skill-deep-dives/github.md +333 -0
  772. package/skills/onboarding/docs/skill-deep-dives/gog.md +640 -0
  773. package/skills/onboarding/docs/skill-deep-dives/homebrew-prereqs.md +785 -0
  774. package/skills/onboarding/docs/skill-deep-dives/nexus-cloud.md +689 -0
  775. package/skills/onboarding/docs/skill-deep-dives/qmd.md +742 -0
  776. package/skills/onboarding/docs/skill-deep-dives/telegram.md +379 -0
  777. package/skills/onboarding/docs/skill-deep-dives/wacli.md +399 -0
  778. package/skills/onboarding/docs/skill-deep-dives/weather.md +513 -0
  779. package/skills/onboarding/scripts/ralph/prd.json +215 -0
  780. package/skills/onboarding/scripts/ralph/progress.txt +99 -0
  781. package/skills/onboarding/scripts/ralph/prompt.md +87 -0
  782. package/skills/onboarding/scripts/ralph/ralph.log +84 -0
  783. package/skills/onboarding/scripts/ralph/ralph.sh +45 -0
  784. package/skills/onboarding/scripts/setup-cursor-skills.sh +40 -0
  785. package/skills/openai-image-gen/SKILL.md +31 -0
  786. package/skills/openai-image-gen/scripts/gen.py +173 -0
  787. package/skills/openai-whisper/SKILL.md +19 -0
  788. package/skills/openai-whisper-api/SKILL.md +43 -0
  789. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  790. package/skills/openhue/SKILL.md +30 -0
  791. package/skills/oracle/SKILL.md +105 -0
  792. package/skills/ordercli/SKILL.md +47 -0
  793. package/skills/peekaboo/SKILL.md +153 -0
  794. package/skills/qmd/SKILL.md +32 -0
  795. package/skills/qmd/docs/mcp.md +30 -0
  796. package/skills/qmd/docs/ollama.md +42 -0
  797. package/skills/qmd/docs/setup.md +44 -0
  798. package/skills/sag/SKILL.md +62 -0
  799. package/skills/skill-cli-template/SKILL.md +109 -0
  800. package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-311.pyc +0 -0
  801. package/skills/slack/SKILL.md +144 -0
  802. package/skills/songsee/SKILL.md +29 -0
  803. package/skills/sonoscli/SKILL.md +26 -0
  804. package/skills/spotify-player/SKILL.md +34 -0
  805. package/skills/summarize/SKILL.md +49 -0
  806. package/skills/telegram/SKILL.md +20 -0
  807. package/skills/telegram/docs/pairing.md +30 -0
  808. package/skills/telegram/docs/setup.md +41 -0
  809. package/skills/telegram/docs/webhook.md +17 -0
  810. package/skills/things-mac/SKILL.md +61 -0
  811. package/skills/tmux/SKILL.md +121 -0
  812. package/skills/tmux/scripts/find-sessions.sh +112 -0
  813. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  814. package/skills/trello/SKILL.md +84 -0
  815. package/skills/upstream-sync/SKILL.md +151 -0
  816. package/skills/upstream-sync/scripts/auto-port.sh +227 -0
  817. package/skills/upstream-sync/scripts/check-all.sh +88 -0
  818. package/skills/upstream-sync/scripts/check-nexus.sh +146 -0
  819. package/skills/upstream-sync/scripts/check-pi-ai.sh +129 -0
  820. package/skills/video-frames/SKILL.md +29 -0
  821. package/skills/video-frames/scripts/frame.sh +81 -0
  822. package/skills/wacli/SKILL.md +48 -0
  823. package/skills/wacli/docs/auth.md +21 -0
  824. package/skills/wacli/docs/backup.md +9 -0
  825. package/skills/wacli/docs/troubleshooting.md +21 -0
  826. package/skills/weather/SKILL.md +53 -0
  827. 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.