@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,126 @@
1
+ # Nexus Usage Event Log + Suggestions (Local Spec)
2
+
3
+ This document captures the local ingestion, analysis, and suggestion pipeline
4
+ for Nexus CLI usage. The goal is to make the system concrete and testable
5
+ locally before any cloud aggregation.
6
+
7
+ ## Goals
8
+
9
+ - Persist ordered usage events for every Nexus CLI invocation.
10
+ - Track tool and skill usage from agent event streams.
11
+ - Provide deterministic, local suggestions based on real sequences.
12
+ - Keep the system simple to backfill and audit.
13
+
14
+ ## Non-Goals (for now)
15
+
16
+ - Cloud aggregation or anonymization.
17
+ - ML-driven recommendation models.
18
+ - Cross-device sync of usage data.
19
+
20
+ ## Data Sources
21
+
22
+ ### CLI Events (Nexus Core)
23
+
24
+ Captured by the CLI entrypoint and command hooks:
25
+ - `cli_session_start`
26
+ - `command_started`
27
+ - `command_finished`
28
+ - `command_failed`
29
+ - `cli_session_end`
30
+
31
+ ### Agent Tool/Skill Events
32
+
33
+ Agent tool lifecycle events are persisted via the existing `emitAgentEvent`
34
+ stream and a log listener.
35
+
36
+ ## Storage (Local)
37
+
38
+ Events are written as JSONL in the Nexus state directory:
39
+
40
+ ```
41
+ ~/nexus/state/events/events-YYYY-MM-DD.jsonl
42
+ ```
43
+
44
+ Configuration:
45
+ - `NEXUS_EVENT_LOG=0|false|off` disables event logging
46
+ - `NEXUS_EVENT_LOG_DIR=/custom/path` overrides the event log directory
47
+
48
+ ## Event Schema (JSONL)
49
+
50
+ Each line is a single JSON object. Minimal shape:
51
+
52
+ ```json
53
+ {
54
+ "id": "uuid",
55
+ "ts": 1712345678901,
56
+ "seq": 12,
57
+ "session_id": "uuid",
58
+ "source": "nexus_cli",
59
+ "event_type": "command_finished",
60
+ "command_path": "status",
61
+ "argv": ["nexus", "status", "--json"],
62
+ "cwd": "/Users/tyler/nexus",
63
+ "status": "ok",
64
+ "data": { "version": "2026.1.5-3" },
65
+ "schema_version": 1
66
+ }
67
+ ```
68
+
69
+ Notes:
70
+ - `seq` is monotonic per session.
71
+ - `session_id` groups all events for a single CLI run.
72
+ - `argv` is sanitized (sensitive flags are redacted).
73
+
74
+ ## Analysis Pipeline (Local)
75
+
76
+ We use an n-gram style transition table built from ordered events.
77
+
78
+ ### Key Extraction
79
+
80
+ - CLI usage key: `source:cli:<command_path>`
81
+ - Tool usage key: `source:tool:<tool_name>` from agent tool stream
82
+
83
+ ### Transition Table
84
+
85
+ For each session sequence:
86
+ ```
87
+ key[i] -> key[i+1] (count)
88
+ ```
89
+
90
+ ### Ranking
91
+
92
+ Scores are proportional to transition frequency:
93
+ ```
94
+ score = count / total_transitions_from_last_key
95
+ ```
96
+
97
+ ### Fallbacks
98
+
99
+ If no transitions exist for the last key, fall back to global top keys
100
+ by frequency.
101
+
102
+ ## Suggestion Scope
103
+
104
+ - **global**: use all local sessions (default)
105
+ - **session**: restrict to a specific session
106
+
107
+ ## Surfaces (Current)
108
+
109
+ - `nexus suggestions` CLI command with JSON output
110
+
111
+ Potential future surfaces:
112
+ - Inline suggestion after command completion
113
+ - Suggestions in `nexus status`
114
+
115
+ ## Comms Import (Optional Consumer)
116
+
117
+ The Comms adapter can import `~/nexus/state/events/*.jsonl` into
118
+ `comms.events` for analysis or cross-source correlation.
119
+
120
+ ## Next Steps
121
+
122
+ - Add `invocation_kind` (direct vs wrapper vs cargo) if needed.
123
+ - Add richer tool/skill metadata in `data` for better ranking.
124
+ - Add optional gating on `status` (only successful commands).
125
+
126
+ See `docs/usage-cloud-aggregation-spec.md` for the cloud schema and upload plan.
@@ -0,0 +1,61 @@
1
+ ---
2
+ summary: "Global voice wake words (Gateway-owned) and how they sync across nodes"
3
+ read_when:
4
+ - Changing voice wake words behavior or defaults
5
+ - Adding new node platforms that need wake word sync
6
+ ---
7
+ # Voice Wake (Global Wake Words)
8
+
9
+ Nexus treats **wake words as a single global list** owned by the **Gateway**.
10
+
11
+ - There are **no per-node custom wake words**.
12
+ - **Any node/app UI may edit** the list; changes are persisted by the Gateway and broadcast to everyone.
13
+ - Each device still keeps its own **Voice Wake enabled/disabled** toggle (local UX + permissions differ).
14
+
15
+ ## Storage (Gateway host)
16
+
17
+ Wake words are stored on the gateway machine at:
18
+
19
+ - `~/nexus/state/settings/voicewake.json`
20
+
21
+ Shape:
22
+
23
+ ```json
24
+ { "triggers": ["nexus", "claude", "computer"], "updatedAtMs": 1730000000000 }
25
+ ```
26
+
27
+ ## Protocol
28
+
29
+ ### Methods
30
+
31
+ - `voicewake.get` → `{ triggers: string[] }`
32
+ - `voicewake.set` with params `{ triggers: string[] }` → `{ triggers: string[] }`
33
+
34
+ Notes:
35
+ - Triggers are normalized (trimmed, empties dropped). Empty lists fall back to defaults.
36
+ - Limits are enforced for safety (count/length caps).
37
+
38
+ ### Events
39
+
40
+ - `voicewake.changed` payload `{ triggers: string[] }`
41
+
42
+ Who receives it:
43
+ - All WebSocket clients (macOS app, WebChat, etc.)
44
+ - All connected bridge nodes (iOS/Android), and also on node connect as an initial “current state” push.
45
+
46
+ ## Client behavior
47
+
48
+ ### macOS app
49
+
50
+ - Uses the global list to gate `VoiceWakeRuntime` triggers.
51
+ - Editing “Trigger words” in Voice Wake settings calls `voicewake.set` and then relies on the broadcast to keep other clients in sync.
52
+
53
+ ### iOS node
54
+
55
+ - Uses the global list for `VoiceWakeManager` trigger detection.
56
+ - Editing Wake Words in Settings calls `voicewake.set` (over the bridge) and also keeps local wake-word detection responsive.
57
+
58
+ ### Android node
59
+
60
+ - Exposes a Wake Words editor in Settings.
61
+ - Calls `voicewake.set` over the bridge so edits sync everywhere.
package/docs/web.md ADDED
@@ -0,0 +1,115 @@
1
+ ---
2
+ summary: "Gateway web surfaces: Control UI, bind modes, and security"
3
+ read_when:
4
+ - You want to access the Gateway over Tailscale
5
+ - You want the browser Control UI and config editing
6
+ ---
7
+ # Web (Gateway)
8
+
9
+ The Gateway serves a small **browser Control UI** (Vite + Lit) from the same port as the Gateway WebSocket:
10
+
11
+ - default: `http://<host>:18789/`
12
+ - optional prefix: set `gateway.controlUi.basePath` (e.g. `/nexus`)
13
+
14
+ The UI talks directly to the Gateway WS and supports:
15
+ - Chat (`chat.history`, `chat.send`, `chat.abort`)
16
+ - Chat tool cards (agent tool events)
17
+ - Connections (provider status, WhatsApp QR, Telegram config)
18
+ - Instances (`system-presence`)
19
+ - Sessions (`sessions.list`, `sessions.patch`)
20
+ - Cron (`cron.*`)
21
+ - Skills (`skills.status`, `skills.update`, `skills.install`)
22
+ - Nodes (`node.list`, `node.describe`, `node.invoke`)
23
+ - Config (`config.get`, `config.set`) for `~/nexus/state/nexus.json`
24
+ - Debug (status/health/models snapshots + manual calls)
25
+
26
+ ## Webhooks
27
+
28
+ When `hooks.enabled=true`, the Gateway also exposes a small webhook endpoint on the same HTTP server.
29
+ See [`docs/configuration.md`](https://docs.nexus.bot/configuration) → `hooks` for auth + payloads.
30
+
31
+ ## Config (default-on)
32
+
33
+ The Control UI is **enabled by default** when assets are present (`dist/control-ui`).
34
+ You can control it via config:
35
+
36
+ ```json5
37
+ {
38
+ gateway: {
39
+ controlUi: { enabled: true, basePath: "/nexus" } // basePath optional
40
+ }
41
+ }
42
+ ```
43
+
44
+ ## Tailscale access
45
+
46
+ ### Integrated Serve (recommended)
47
+
48
+ Keep the Gateway on loopback and let Tailscale Serve proxy it:
49
+
50
+ ```json5
51
+ {
52
+ gateway: {
53
+ bind: "loopback",
54
+ tailscale: { mode: "serve" }
55
+ }
56
+ }
57
+ ```
58
+
59
+ Then start the gateway:
60
+
61
+ ```bash
62
+ nexus gateway
63
+ ```
64
+
65
+ Open:
66
+ - `https://<magicdns>/` (or your configured `gateway.controlUi.basePath`)
67
+
68
+ ### Tailnet bind + token (legacy)
69
+
70
+ ```json5
71
+ {
72
+ gateway: {
73
+ bind: "tailnet",
74
+ controlUi: { enabled: true }
75
+ }
76
+ }
77
+ ```
78
+
79
+ Then start the gateway (token required for non-loopback binds):
80
+
81
+ ```bash
82
+ export NEXUS_GATEWAY_TOKEN="…your token…"
83
+ nexus gateway
84
+ ```
85
+
86
+ Open:
87
+ - `http://<tailscale-ip>:18789/` (or your configured `gateway.controlUi.basePath`)
88
+
89
+ ### Public internet (Funnel)
90
+
91
+ ```json5
92
+ {
93
+ gateway: {
94
+ bind: "loopback",
95
+ tailscale: { mode: "funnel" },
96
+ auth: { mode: "password" } // or NEXUS_GATEWAY_PASSWORD
97
+ }
98
+ }
99
+ ```
100
+
101
+ ## Security notes
102
+
103
+ - Binding the Gateway to a non-loopback address **requires** auth (`NEXUS_GATEWAY_TOKEN` or `gateway.auth`).
104
+ - The UI sends `connect.params.auth.token` or `connect.params.auth.password`.
105
+ - Use `gateway.auth.allowTailscale: false` to require explicit credentials even in Serve mode.
106
+ - `gateway.tailscale.mode: "funnel"` requires `gateway.auth.mode: "password"` (shared password).
107
+
108
+ ## Building the UI
109
+
110
+ The Gateway serves static files from `dist/control-ui`. Build them with:
111
+
112
+ ```bash
113
+ bun run ui:install
114
+ bun run ui:build
115
+ ```
@@ -0,0 +1,34 @@
1
+ ---
2
+ summary: "Loopback WebChat static host and Gateway WS usage for chat UI"
3
+ read_when:
4
+ - Debugging or configuring WebChat access
5
+ ---
6
+ # WebChat (SwiftUI + Gateway WS)
7
+
8
+ Updated: 2025-12-17
9
+
10
+ ## What it is
11
+ - A native SwiftUI chat UI (macOS app / iOS) that talks directly to the Gateway WebSocket.
12
+ - No embedded browser/WKWebView and no bundled static WebChat HTTP server.
13
+ - Data plane is entirely Gateway WS: methods `chat.history`, `chat.send`, `chat.abort`; events `chat`, `agent`, `presence`, `tick`, `health`.
14
+
15
+ ## How it connects
16
+ - The UI performs Gateway WS `connect`, then calls `chat.history` for bootstrap and `chat.send` for sends; it listens to `chat/agent/presence/tick/health` events.
17
+ - History comes from the Gateway via `chat.history` (no local session file watching).
18
+ - If Gateway WS is unavailable, the UI surfaces the error and blocks send.
19
+
20
+ ## Remote use
21
+ - In remote mode, the macOS app forwards the Gateway WebSocket control port via SSH and uses that for the SwiftUI chat UI.
22
+ - You generally should not need to manage tunnels manually; see `RemoteTunnelManager` in the app.
23
+
24
+ ## Config
25
+ - WebChat does not have a separate HTTP port/config anymore.
26
+ - Gateway WS is configured via the app’s gateway endpoint settings (`GatewayEndpointStore`) or `nexus gateway --port` when running locally.
27
+
28
+ ## Failure handling
29
+ - UI errors when the Gateway handshake fails or the WS drops.
30
+ - No fallback transport; the Gateway WS is required.
31
+
32
+ ## Dev notes
33
+ - macOS glue: `apps/macos/Sources/Nexus/WebChatSwiftUI.swift` + `apps/macos/Sources/Nexus/WebChatManager.swift`.
34
+ - Remote tunnel helper: `apps/macos/Sources/Nexus/RemotePortTunnel.swift`.
@@ -0,0 +1,132 @@
1
+ ---
2
+ summary: "Webhook ingress for wake and isolated agent runs"
3
+ read_when:
4
+ - Adding or changing webhook endpoints
5
+ - Wiring external systems into Nexus
6
+ ---
7
+
8
+ # Webhooks
9
+
10
+ Gateway can expose a small HTTP webhook endpoint for external triggers.
11
+
12
+ ## Enable
13
+
14
+ ```json5
15
+ {
16
+ hooks: {
17
+ enabled: true,
18
+ token: "shared-secret",
19
+ path: "/hooks"
20
+ }
21
+ }
22
+ ```
23
+
24
+ Notes:
25
+ - `hooks.token` is required when `hooks.enabled=true`.
26
+ - `hooks.path` defaults to `/hooks`.
27
+
28
+ ## Auth
29
+
30
+ Every request must include the hook token:
31
+ - `Authorization: Bearer <token>`
32
+ - or `x-nexus-token: <token>`
33
+ - or `?token=<token>`
34
+
35
+ ## Endpoints
36
+
37
+ ### `POST /hooks/wake`
38
+
39
+ Payload:
40
+ ```json
41
+ { "text": "System line", "mode": "now" }
42
+ ```
43
+
44
+ - `text` required (string)
45
+ - `mode` optional: `now` | `next-heartbeat` (default `now`)
46
+
47
+ Effect:
48
+ - Enqueues a system event for the **main** session
49
+ - If `mode=now`, triggers an immediate heartbeat
50
+
51
+ ### `POST /hooks/agent`
52
+
53
+ Payload:
54
+ ```json
55
+ {
56
+ "message": "Run this",
57
+ "name": "Email",
58
+ "sessionKey": "hook:email:msg-123",
59
+ "wakeMode": "now",
60
+ "deliver": false,
61
+ "provider": "last",
62
+ "to": "+15551234567",
63
+ "thinking": "low",
64
+ "timeoutSeconds": 120
65
+ }
66
+ ```
67
+
68
+ - `message` required (string)
69
+ - `name` optional (used in the summary prefix)
70
+ - `sessionKey` optional (default random `hook:<uuid>`)
71
+ - `wakeMode` optional: `now` | `next-heartbeat` (default `now`)
72
+ - `deliver` optional (default `false`)
73
+ - `provider` optional: `last` | `whatsapp` | `telegram`
74
+ - `to` optional (provider-specific target)
75
+ - `thinking` optional (override)
76
+ - `timeoutSeconds` optional
77
+
78
+ Effect:
79
+ - Runs an **isolated** agent turn (own session key)
80
+ - Always posts a summary into the **main** session
81
+ - If `wakeMode=now`, triggers an immediate heartbeat
82
+
83
+ ### `POST /hooks/<name>` (mapped)
84
+
85
+ Custom hook names are resolved via `hooks.mappings` (see configuration). A mapping can
86
+ turn arbitrary payloads into `wake` or `agent` actions, with optional templates or
87
+ code transforms.
88
+
89
+ Mapping options (summary):
90
+ - `hooks.presets: ["gmail"]` enables the built-in Gmail mapping.
91
+ - `hooks.mappings` lets you define `match`, `action`, and templates in config.
92
+ - `hooks.transformsDir` + `transform.module` loads a JS/TS module for custom logic.
93
+ - Use `match.source` to keep a generic ingest endpoint (payload-driven routing).
94
+ - TS transforms require a TS loader (e.g. `bun`) or precompiled `.js` at runtime.
95
+ - `nexus hooks gmail setup` writes `hooks.gmail` config for `nexus hooks gmail run`.
96
+
97
+ ## Responses
98
+
99
+ - `200` for `/hooks/wake`
100
+ - `202` for `/hooks/agent` (async run started)
101
+ - `401` on auth failure
102
+ - `400` on invalid payload
103
+ - `413` on oversized payloads
104
+
105
+ ## Examples
106
+
107
+ ```bash
108
+ curl -X POST http://127.0.0.1:18789/hooks/wake \
109
+ -H 'Authorization: Bearer SECRET' \
110
+ -H 'Content-Type: application/json' \
111
+ -d '{"text":"New email received","mode":"now"}'
112
+ ```
113
+
114
+ ```bash
115
+ curl -X POST http://127.0.0.1:18789/hooks/agent \
116
+ -H 'x-nexus-token: SECRET' \
117
+ -H 'Content-Type: application/json' \
118
+ -d '{"message":"Summarize inbox","name":"Email","wakeMode":"next-heartbeat"}'
119
+ ```
120
+
121
+ ```bash
122
+ curl -X POST http://127.0.0.1:18789/hooks/gmail \
123
+ -H 'Authorization: Bearer SECRET' \
124
+ -H 'Content-Type: application/json' \
125
+ -d '{"source":"gmail","messages":[{"from":"Ada","subject":"Hello","snippet":"Hi"}]}'
126
+ ```
127
+
128
+ ## Security
129
+
130
+ - Keep hook endpoints behind loopback, tailnet, or trusted reverse proxy.
131
+ - Use a dedicated hook token; do not reuse gateway auth tokens.
132
+ - Avoid including sensitive raw payloads in webhook logs.
Binary file
@@ -0,0 +1,170 @@
1
+ ---
2
+ summary: "WhatsApp (web provider) integration: login, inbox, replies, media, and ops"
3
+ read_when:
4
+ - Working on WhatsApp/web provider behavior or inbox routing
5
+ ---
6
+ # WhatsApp (web provider)
7
+
8
+ Updated: 2025-12-23
9
+
10
+ Status: WhatsApp Web via Baileys only. Gateway owns the session(s).
11
+
12
+ ## Goals
13
+ - Multiple WhatsApp accounts (multi-account) in one Gateway process.
14
+ - Deterministic routing: replies return to WhatsApp, no model routing.
15
+ - Model sees enough context to understand quoted replies.
16
+
17
+ ## Architecture (who owns what)
18
+ - **Gateway** owns the Baileys socket and inbox loop.
19
+ - **CLI / macOS app** talk to the gateway; no direct Baileys use.
20
+ - **Active listener** is required for outbound sends; otherwise send fails fast.
21
+
22
+ ## Getting a phone number
23
+
24
+ WhatsApp requires a real mobile number for verification. VoIP and virtual numbers are usually blocked.
25
+
26
+ **Recommended approaches:**
27
+ - **Local eSIM** from your country's mobile carrier (most reliable)
28
+ - Austria: [hot.at](https://www.hot.at)
29
+ - UK: [giffgaff](https://www.giffgaff.com) — free SIM, no contract
30
+ - **Prepaid SIM** — cheap, just needs to receive one SMS for verification
31
+
32
+ **Avoid:** TextNow, Google Voice, most "free SMS" services — WhatsApp blocks these aggressively.
33
+
34
+ **Tip:** The number only needs to receive one verification SMS. After that, WhatsApp Web sessions persist via `creds.json`.
35
+
36
+ **WhatsApp Business:** You can use WhatsApp Business on the same phone with a different number. This is a great option if you want to keep your personal WhatsApp separate — just install WhatsApp Business and register it with Nexus's dedicated number.
37
+
38
+ ## Login + credentials
39
+ - Login command: `nexus login` (QR via Linked Devices).
40
+ - Multi-account login: `nexus login --account <id>` (`<id>` = `accountId`).
41
+ - Default account (when `--account` is omitted): `default` if present, otherwise the first configured account id (sorted).
42
+ - Credentials stored in `~/nexus/state/credentials/whatsapp/<accountId>/creds.json`.
43
+ - Backup copy at `creds.json.bak` (restored on corruption).
44
+ - Legacy compatibility: older installs stored Baileys files directly in `~/nexus/state/credentials/`.
45
+ - Logout: `nexus logout` (or `--account <id>`) deletes WhatsApp auth state (but keeps shared `oauth.json`).
46
+ - Logged-out socket => error instructs re-link.
47
+
48
+ ## Inbound flow (DM + group)
49
+ - WhatsApp events come from `messages.upsert` (Baileys).
50
+ - Inbox listeners are detached on shutdown to avoid accumulating event handlers in tests/restarts.
51
+ - Status/broadcast chats are ignored.
52
+ - Direct chats use E.164; groups use group JID.
53
+ - **DM policy**: `whatsapp.dmPolicy` controls direct chat access (default: `pairing`).
54
+ - Pairing: unknown senders get a pairing code (approve via `nexus pairing approve --provider whatsapp <code>`).
55
+ - Open: requires `whatsapp.allowFrom` to include `"*"`.
56
+ - Self messages are always allowed; “self-chat mode” still requires `whatsapp.allowFrom` to include your own number.
57
+ - **Group policy**: `whatsapp.groupPolicy` controls group handling (`open|disabled|allowlist`).
58
+ - `allowlist` uses `whatsapp.groupAllowFrom` (fallback: explicit `whatsapp.allowFrom`).
59
+ - **Self-chat mode**: avoids auto read receipts and ignores mention JIDs.
60
+ - Read receipts sent for non-self-chat DMs.
61
+
62
+ ## WhatsApp FAQ: sending messages + pairing
63
+
64
+ **Will Nexus message random contacts when I link WhatsApp?**
65
+ No. Default DM policy is **pairing**, so unknown senders only get a pairing code and their message is **not processed**. Nexus only replies to chats it receives, or to sends you explicitly trigger (agent/CLI).
66
+
67
+ **How does pairing work on WhatsApp?**
68
+ Pairing is a DM gate for unknown senders:
69
+ - First DM from a new sender returns a short code (message is not processed).
70
+ - Approve with: `nexus pairing approve --channel whatsapp <code>` (list with `nexus pairing list --channel whatsapp`).
71
+ - Codes expire after 1 hour; pending requests are capped at 3 per provider.
72
+
73
+ **Why do you ask for my phone number in the wizard?**
74
+ The wizard uses it to set your **allowlist/owner** so your own DMs are permitted. It’s not used for auto-sending. If you run on your personal WhatsApp number, use that same number and enable `whatsapp.selfChatMode`.
75
+
76
+ ## Message normalization (what the model sees)
77
+ - `Body` is the current message body with envelope.
78
+ - Quoted reply context is **always appended**:
79
+ ```
80
+ [Replying to +1555 id:ABC123]
81
+ <quoted text or <media:...>>
82
+ [/Replying]
83
+ ```
84
+ - Reply metadata also set:
85
+ - `ReplyToId` = stanzaId
86
+ - `ReplyToBody` = quoted body or media placeholder
87
+ - `ReplyToSender` = E.164 when known
88
+ - Media-only inbound messages use placeholders:
89
+ - `<media:image|video|audio|document|sticker>`
90
+
91
+ ## Groups
92
+ - Groups map to `agent:<agentId>:whatsapp:group:<jid>` sessions.
93
+ - Group policy: `whatsapp.groupPolicy = open|disabled|allowlist` (default `open`).
94
+ - Activation modes:
95
+ - `mention` (default): requires @mention or regex match.
96
+ - `always`: always triggers.
97
+ - `/activation mention|always` is owner-only.
98
+ - Owner = `whatsapp.allowFrom` (or self E.164 if unset).
99
+ - **History injection**:
100
+ - Recent messages (default 50) inserted under:
101
+ `[Chat messages since your last reply - for context]`
102
+ - Current message under:
103
+ `[Current message - respond to this]`
104
+ - Sender suffix appended: `[from: Name (+E164)]`
105
+ - Group metadata cached 5 min (subject + participants).
106
+
107
+ ## Reply delivery (threading)
108
+ - WhatsApp Web sends standard messages (no quoted reply threading in the current gateway).
109
+ - Reply tags are ignored on this provider.
110
+
111
+ ## Outbound send (text + media)
112
+ - Uses active web listener; error if gateway not running.
113
+ - Text chunking: 4k max per message.
114
+ - Media:
115
+ - Image/video/audio/document supported.
116
+ - Audio sent as PTT; `audio/ogg` => `audio/ogg; codecs=opus`.
117
+ - Caption only on first media item.
118
+ - Media fetch supports HTTP(S) and local paths.
119
+ - Animated GIFs: WhatsApp expects MP4 with `gifPlayback: true` for inline looping.
120
+ - CLI: `nexus send --media <mp4> --gif-playback`
121
+ - Gateway: `send` params include `gifPlayback: true`
122
+
123
+ ## Media limits + optimization
124
+ - Default cap: 5 MB (per media item).
125
+ - Override: `agent.mediaMaxMb`.
126
+ - Images are auto-optimized to JPEG under cap (resize + quality sweep).
127
+ - Oversize media => error; media reply falls back to text warning.
128
+
129
+ ## Heartbeats
130
+ - **Gateway heartbeat** logs connection health (`web.heartbeatSeconds`, default 60s).
131
+ - **Agent heartbeat** is global (`agent.heartbeat.*`) and runs in the main session.
132
+ - Uses `HEARTBEAT` prompt + `HEARTBEAT_OK` skip behavior.
133
+ - Delivery defaults to the last used provider (or configured target).
134
+
135
+ ## Reconnect behavior
136
+ - Backoff policy: `web.reconnect`:
137
+ - `initialMs`, `maxMs`, `factor`, `jitter`, `maxAttempts`.
138
+ - If maxAttempts reached, web monitoring stops (degraded).
139
+ - Logged-out => stop and require re-link.
140
+
141
+ ## Config quick map
142
+ - `whatsapp.dmPolicy` (DM policy: pairing/allowlist/open/disabled).
143
+ - `whatsapp.allowFrom` (DM allowlist).
144
+ - `whatsapp.accounts.<accountId>.*` (per-account settings + optional `authDir`).
145
+ - `whatsapp.groupAllowFrom` (group sender allowlist).
146
+ - `whatsapp.groupPolicy` (group policy).
147
+ - `whatsapp.groups` (group allowlist + mention gating defaults; use `"*"` to allow all)
148
+ - `routing.groupChat.mentionPatterns`
149
+ - `routing.groupChat.historyLimit`
150
+ - `messages.messagePrefix` (inbound prefix)
151
+ - `messages.responsePrefix` (outbound prefix)
152
+ - `agent.mediaMaxMb`
153
+ - `agent.heartbeat.every`
154
+ - `agent.heartbeat.model` (optional override)
155
+ - `agent.heartbeat.target`
156
+ - `agent.heartbeat.to`
157
+ - `session.*` (scope, idle, store, mainKey)
158
+ - `web.enabled` (disable provider startup when false)
159
+ - `web.heartbeatSeconds`
160
+ - `web.reconnect.*`
161
+
162
+ ## Logs + troubleshooting
163
+ - Subsystems: `whatsapp/inbound`, `whatsapp/outbound`, `web-heartbeat`, `web-reconnect`.
164
+ - Log file: `~/nexus/state/logs/nexus-YYYY-MM-DD.log` (configurable).
165
+ - Troubleshooting guide: [`docs/troubleshooting.md`](https://docs.nexus.bot/troubleshooting).
166
+
167
+ ## Tests
168
+ - `src/web/auto-reply.test.ts` (mention gating, history injection, reply flow)
169
+ - `src/web/monitor-inbox.test.ts` (inbound parsing + reply context)
170
+ - `src/web/outbound.test.ts` (send mapping + media)
@@ -0,0 +1,11 @@
1
+ ---
2
+ summary: "Windows app status + contribution call"
3
+ read_when:
4
+ - Looking for Windows companion app status
5
+ - Planning platform coverage or contributions
6
+ ---
7
+ # Windows App
8
+
9
+ Nexus core is fully supported on Windows. The core is written in TypeScript, so it runs anywhere Node runs.
10
+
11
+ We do not have a Windows companion app yet. It is planned, and we would love contributions to make it happen.