@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,114 @@
1
+ ---
2
+ summary: "Fix Chrome/Chromium CDP startup issues for Nexus browser control on Linux"
3
+ read_when: "Browser control fails on Linux, especially with snap Chromium"
4
+ ---
5
+
6
+ # Browser Troubleshooting (Linux)
7
+
8
+ ## Problem: "Failed to start Chrome CDP on port 18800"
9
+
10
+ Nexus's browser control server fails to launch Chrome/Chromium with the error:
11
+ ```
12
+ {"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"nexus\"."}
13
+ ```
14
+
15
+ ### Root Cause
16
+
17
+ On Ubuntu (and many Linux distros), the default Chromium installation is a **snap package**. Snap's AppArmor confinement interferes with how Nexus spawns and monitors the browser process.
18
+
19
+ The `apt install chromium` command installs a stub package that redirects to snap:
20
+ ```
21
+ Note, selecting 'chromium-browser' instead of 'chromium'
22
+ chromium-browser is already the newest version (2:1snap1-0ubuntu2).
23
+ ```
24
+
25
+ This is NOT a real browser — it's just a wrapper.
26
+
27
+ ### Solution 1: Install Google Chrome (Recommended)
28
+
29
+ Install the official Google Chrome `.deb` package, which is not sandboxed by snap:
30
+
31
+ ```bash
32
+ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
33
+ sudo dpkg -i google-chrome-stable_current_amd64.deb
34
+ sudo apt --fix-broken install -y # if there are dependency errors
35
+ ```
36
+
37
+ Then update your Nexus config (`~/nexus/state/nexus.json`):
38
+
39
+ ```json
40
+ {
41
+ "browser": {
42
+ "enabled": true,
43
+ "executablePath": "/usr/bin/google-chrome-stable",
44
+ "headless": true,
45
+ "noSandbox": true
46
+ }
47
+ }
48
+ ```
49
+
50
+ ### Solution 2: Use Snap Chromium with Attach-Only Mode
51
+
52
+ If you must use snap Chromium, configure Nexus to attach to a manually-started browser:
53
+
54
+ 1. Update config:
55
+ ```json
56
+ {
57
+ "browser": {
58
+ "enabled": true,
59
+ "attachOnly": true,
60
+ "headless": true,
61
+ "noSandbox": true
62
+ }
63
+ }
64
+ ```
65
+
66
+ 2. Start Chromium manually:
67
+ ```bash
68
+ chromium-browser --headless --no-sandbox --disable-gpu \
69
+ --remote-debugging-port=18800 \
70
+ --user-data-dir=$HOME/.nexus/browser/nexus/user-data \
71
+ about:blank &
72
+ ```
73
+
74
+ 3. Optionally create a systemd user service to auto-start Chrome:
75
+ ```ini
76
+ # ~/.config/systemd/user/nexus-browser.service
77
+ [Unit]
78
+ Description=Nexus Browser (Chrome CDP)
79
+ After=network.target
80
+
81
+ [Service]
82
+ ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.nexus/browser/nexus/user-data about:blank
83
+ Restart=on-failure
84
+ RestartSec=5
85
+
86
+ [Install]
87
+ WantedBy=default.target
88
+ ```
89
+
90
+ Enable with: `systemctl --user enable --now nexus-browser.service`
91
+
92
+ ### Verifying the Browser Works
93
+
94
+ Check status:
95
+ ```bash
96
+ curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
97
+ ```
98
+
99
+ Test browsing:
100
+ ```bash
101
+ curl -s -X POST http://127.0.0.1:18791/start
102
+ curl -s http://127.0.0.1:18791/tabs
103
+ ```
104
+
105
+ ### Config Reference
106
+
107
+ | Option | Description | Default |
108
+ |--------|-------------|---------|
109
+ | `browser.enabled` | Enable browser control | `true` |
110
+ | `browser.executablePath` | Path to Chrome/Chromium binary | auto-detected |
111
+ | `browser.headless` | Run without GUI | `false` |
112
+ | `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` |
113
+ | `browser.attachOnly` | Don't launch browser, only attach to existing | `false` |
114
+ | `browser.cdpPort` | Chrome DevTools Protocol port | `18800` |
@@ -0,0 +1,293 @@
1
+ ---
2
+ summary: "Spec: integrated browser control server + action commands"
3
+ read_when:
4
+ - Adding agent-controlled browser automation
5
+ - Debugging why nexus is interfering with your own Chrome
6
+ - Implementing browser settings + lifecycle in the macOS app
7
+ ---
8
+
9
+ # Browser (integrated) — nexus-managed Chrome
10
+
11
+ Status: draft spec · Date: 2025-12-20
12
+
13
+ Goal: give the **nexus** persona its own browser that is:
14
+ - Visually distinct (lobster-orange, profile labeled "nexus").
15
+ - Fully agent-manageable (start/stop, list tabs, focus/close tabs, open URLs, screenshot).
16
+ - Non-interfering with the user's own browser (separate profile + dedicated ports).
17
+
18
+ This doc covers the macOS app/gateway side. It intentionally does not mandate
19
+ Playwright vs Puppeteer; the key is the **contract** and the **separation guarantees**.
20
+
21
+ ## User-facing settings
22
+
23
+ Add a dedicated settings section (preferably under **Skills** or its own "Browser" tab):
24
+
25
+ - **Enable nexus browser** (`default: on`)
26
+ - When off: no browser is launched, and browser tools return "disabled".
27
+ - **Browser control URL** (`default: http://127.0.0.1:18791`)
28
+ - Interpreted as the base URL of the local/remote browser-control server.
29
+ - If the URL host is not loopback, Nexus must **not** attempt to launch a local
30
+ browser; it only connects.
31
+ - **CDP URL** (`default: controlUrl + 1`)
32
+ - Base URL for Chrome DevTools Protocol (e.g. `http://127.0.0.1:18792`).
33
+ - Set this to a non-loopback host to attach the local control server to a remote
34
+ Chrome/Chromium CDP endpoint (SSH/Tailscale tunnel recommended).
35
+ - If the CDP URL host is non-loopback, nexus does **not** auto-launch a local browser.
36
+ - If you tunnel a remote CDP to `localhost`, set **Attach to existing only** to
37
+ avoid accidentally launching a local browser.
38
+ - **Accent color** (`default: #FF4500`, "lobster-orange")
39
+ - Used to theme the nexus browser profile (best-effort) and to tint UI indicators
40
+ in Nexus.
41
+
42
+ Optional (advanced, can be hidden behind Debug initially):
43
+ - **Use headless browser** (`default: off`)
44
+ - **Attach to existing only** (`default: off`) — if on, never launch; only connect if
45
+ already running.
46
+ - **Browser executable path** (override, optional)
47
+ - **No sandbox** (`default: off`) — adds `--no-sandbox` + `--disable-setuid-sandbox`
48
+
49
+ ### Port convention
50
+
51
+ Nexus already uses:
52
+ - Gateway WebSocket: `18789`
53
+ - Bridge (voice/node): `18790`
54
+
55
+ For the nexus browser-control server, use "family" ports:
56
+ - Browser control HTTP API: `18791` (bridge + 1)
57
+ - Browser CDP/debugging port: `18792` (control + 1)
58
+ - Canvas host HTTP: `18793` by default, mounted at `/__nexus__/canvas/`
59
+
60
+ The user usually only configures the **control URL** (port `18791`). CDP is an
61
+ internal detail.
62
+
63
+ ## Browser isolation guarantees (non-negotiable)
64
+
65
+ 1) **Dedicated user data dir**
66
+ - Never attach to or reuse the user's default Chrome profile.
67
+ - Store nexus browser state under an app-owned directory, e.g.:
68
+ - `~/Library/Application Support/Nexus/browser/nexus/` (mac app)
69
+ - or `~/nexus/state/browser/nexus/` (gateway/CLI)
70
+
71
+ 2) **Dedicated ports**
72
+ - Never use `9222` (reserved for ad-hoc dev workflows; avoids colliding with
73
+ `agent-tools/browser-tools`).
74
+ - Default ports are `18791/18792` unless overridden.
75
+
76
+ 3) **Named tab/page management**
77
+ - The agent must be able to enumerate and target tabs deterministically (by
78
+ stable `targetId` or equivalent), not "last tab".
79
+
80
+ ## Browser selection (macOS + Linux)
81
+
82
+ On startup (when enabled + local URL), Nexus chooses the browser executable
83
+ in this order:
84
+ 1) **Google Chrome Canary** (if installed)
85
+ 2) **Chromium** (if installed)
86
+ 3) **Google Chrome** (fallback)
87
+
88
+ Linux:
89
+ - Looks for `google-chrome` / `chromium` in common system paths.
90
+ - Use **Browser executable path** to force a specific binary.
91
+
92
+ Implementation detail:
93
+ - macOS: detection is by existence of the `.app` bundle under `/Applications`
94
+ (and optionally `~/Applications`), then using the resolved executable path.
95
+ - Linux: common `/usr/bin`/`/snap/bin` paths.
96
+
97
+ Rationale:
98
+ - Canary/Chromium are easy to visually distinguish from the user's daily driver.
99
+ - Chrome fallback ensures the feature works on a stock machine.
100
+
101
+ ## Visual differentiation ("lobster-orange")
102
+
103
+ The nexus browser should be obviously different at a glance:
104
+ - Profile name: **nexus**
105
+ - Profile color: **#FF4500**
106
+
107
+ Preferred behavior:
108
+ - Seed/patch the profile's preferences on first launch so the color + name persist.
109
+
110
+ Fallback behavior:
111
+ - If preferences patching is not reliable, open with the dedicated profile and let
112
+ the user set the profile color/name once via Chrome UI; it must persist because
113
+ the `userDataDir` is persistent.
114
+
115
+ ## Control server contract (vNext)
116
+
117
+ Expose a small local HTTP API (and/or gateway RPC surface) so the agent can manage
118
+ state without touching the user's Chrome.
119
+
120
+ Basics:
121
+ - `GET /` status payload (enabled/running/pid/cdpPort/etc)
122
+ - `POST /start` start browser
123
+ - `POST /stop` stop browser
124
+ - `GET /tabs` list tabs
125
+ - `POST /tabs/open` open a new tab
126
+ - `POST /tabs/focus` focus a tab by id/prefix
127
+ - `DELETE /tabs/:targetId` close a tab by id/prefix
128
+
129
+ Inspection:
130
+ - `POST /screenshot` `{ targetId?, fullPage?, ref?, element?, type? }`
131
+ - `GET /snapshot` `?format=aria|ai&targetId?&limit?`
132
+ - `GET /console` `?level?&targetId?`
133
+ - `POST /pdf` `{ targetId? }`
134
+
135
+ Actions:
136
+ - `POST /navigate`
137
+ - `POST /act` `{ kind, targetId?, ... }` where `kind` is one of:
138
+ - `click`, `type`, `press`, `hover`, `drag`, `select`, `fill`, `wait`, `resize`, `close`, `evaluate`
139
+
140
+ Hooks (arming):
141
+ - `POST /hooks/file-chooser` `{ targetId?, paths, timeoutMs? }`
142
+ - `POST /hooks/dialog` `{ targetId?, accept, promptText?, timeoutMs? }`
143
+
144
+ ### "Is it open or closed?"
145
+
146
+ "Open" means:
147
+ - the control server is reachable at the configured URL **and**
148
+ - it reports a live browser connection.
149
+
150
+ "Closed" means:
151
+ - control server not reachable, or server reports no browser.
152
+
153
+ Nexus should treat "open/closed" as a health check (fast path), not by scanning
154
+ global Chrome processes (avoid false positives).
155
+
156
+ ## Multi-profile support
157
+
158
+ Nexus supports multiple named browser profiles, each with:
159
+ - Dedicated CDP port (auto-allocated from 18800-18899) **or** a per-profile CDP URL
160
+ - Persistent user data directory (`~/nexus/state/browser/<name>/user-data/`)
161
+ - Unique color for visual distinction
162
+
163
+ ### Configuration
164
+
165
+ ```json
166
+ {
167
+ "browser": {
168
+ "enabled": true,
169
+ "defaultProfile": "nexus",
170
+ "profiles": {
171
+ "nexus": { "cdpPort": 18800, "color": "#FF4500" },
172
+ "work": { "cdpPort": 18801, "color": "#0066CC" },
173
+ "remote": { "cdpUrl": "http://10.0.0.42:9222", "color": "#00AA00" }
174
+ }
175
+ }
176
+ }
177
+ ```
178
+
179
+ ### Profile actions
180
+
181
+ - `GET /profiles` — list all profiles with status
182
+ - `POST /profiles/create` `{ name, color?, cdpUrl? }` — create new profile (auto-allocates port if no `cdpUrl`)
183
+ - `DELETE /profiles/:name` — delete profile (stops browser + removes user data for local profiles)
184
+ - `POST /reset-profile?profile=<name>` — kill orphan process on profile's port (local profiles only)
185
+
186
+ ### Profile parameter
187
+
188
+ All existing endpoints accept optional `?profile=<name>` query parameter:
189
+ - `GET /?profile=work` — status for work profile
190
+ - `POST /start?profile=work` — start work profile browser
191
+ - `GET /tabs?profile=work` — list tabs for work profile
192
+ - etc.
193
+
194
+ When `profile` is omitted, uses `browser.defaultProfile` (defaults to "nexus").
195
+
196
+ ### Profile naming rules
197
+
198
+ - Lowercase alphanumeric characters and hyphens only
199
+ - Must start with a letter or number (not a hyphen)
200
+ - Maximum 64 characters
201
+ - Examples: `nexus`, `work`, `my-project-1`
202
+
203
+ ### Port allocation
204
+
205
+ Ports are allocated from range 18800-18899 (~100 profiles max). This is far more
206
+ than practical use — memory and CPU exhaustion occur well before port exhaustion.
207
+ Ports are allocated once at profile creation and persisted permanently.
208
+ Remote profiles are attach-only and do **not** use the local port range.
209
+ ## Interaction with the agent (nexus)
210
+
211
+ The agent should use browser tools only when:
212
+ - enabled in settings
213
+ - control URL is configured
214
+
215
+ If disabled, tools must fail fast with a friendly error ("Browser disabled in settings").
216
+
217
+ The agent should not assume tabs are ephemeral. It should:
218
+ - call `browser.tabs.list` to discover existing tabs first
219
+ - reuse an existing tab when appropriate (e.g. a persistent "main" tab)
220
+ - avoid opening duplicate tabs unless asked
221
+
222
+ ## CLI quick reference (one example each)
223
+
224
+ All commands accept `--profile <name>` to target a specific profile (default: `nexus`).
225
+
226
+ Profile management:
227
+ - `nexus browser profiles`
228
+ - `nexus browser create-profile --name work`
229
+ - `nexus browser create-profile --name remote --cdp-url http://10.0.0.42:9222`
230
+ - `nexus browser delete-profile --name work`
231
+ Basics:
232
+ - `nexus browser status`
233
+ - `nexus browser start`
234
+ - `nexus browser stop`
235
+ - `nexus browser reset-profile`
236
+ - `nexus browser tabs`
237
+ - `nexus browser open https://example.com`
238
+ - `nexus browser focus abcd1234`
239
+ - `nexus browser close abcd1234`
240
+
241
+ Inspection:
242
+ - `nexus browser screenshot`
243
+ - `nexus browser screenshot --full-page`
244
+ - `nexus browser screenshot --ref 12`
245
+ - `nexus browser snapshot`
246
+ - `nexus browser snapshot --format aria --limit 200`
247
+
248
+ Actions:
249
+ - `nexus browser navigate https://example.com`
250
+ - `nexus browser resize 1280 720`
251
+ - `nexus browser click 12 --double`
252
+ - `nexus browser type 23 "hello" --submit`
253
+ - `nexus browser press Enter`
254
+ - `nexus browser hover 44`
255
+ - `nexus browser drag 10 11`
256
+ - `nexus browser select 9 OptionA OptionB`
257
+ - `nexus browser upload /tmp/file.pdf`
258
+ - `nexus browser fill --fields '[{\"ref\":\"1\",\"value\":\"Ada\"}]'`
259
+ - `nexus browser dialog --accept`
260
+ - `nexus browser wait --text "Done"`
261
+ - `nexus browser evaluate --fn '(el) => el.textContent' --ref 7`
262
+ - `nexus browser evaluate --fn "document.querySelector('.my-class').click()"`
263
+ - `nexus browser console --level error`
264
+ - `nexus browser pdf`
265
+
266
+ Notes:
267
+ - `upload` and `dialog` are **arming** calls; run them before the click/press that triggers the chooser/dialog.
268
+ - `upload` can take a `ref` to auto-click after arming (useful for single-step file uploads).
269
+ - `upload` can also take `inputRef` (aria ref) or `element` (CSS selector) to set `<input type="file">` directly without waiting for a file chooser.
270
+ - The arm default timeout is **2 minutes** (clamped to max 2 minutes); pass `timeoutMs` if you need shorter.
271
+ - `snapshot` defaults to `ai`; `aria` returns an accessibility tree for debugging.
272
+ - `click`/`type` require `ref` from `snapshot --format ai`; use `evaluate` for rare CSS selector one-offs.
273
+ - Avoid `wait` by default; use it only in exceptional cases when there is no reliable UI state to wait on.
274
+
275
+ ## Security & privacy notes
276
+
277
+ - The nexus browser profile is app-owned; it may contain logged-in sessions.
278
+ Treat it as sensitive data.
279
+ - The control server must bind to loopback only by default (`127.0.0.1`) unless the
280
+ user explicitly configures a non-loopback URL.
281
+ - Never reuse or copy the user's default Chrome profile.
282
+ - Remote CDP endpoints should be tunneled or protected; CDP is highly privileged.
283
+
284
+ ## Non-goals (for the first cut)
285
+
286
+ - Cross-device "sync" of tabs between Mac and Pi.
287
+ - Sharing the user's logged-in Chrome sessions automatically.
288
+ - General-purpose web scraping; this is primarily for "close-the-loop" verification
289
+ and interaction.
290
+
291
+ ## Troubleshooting
292
+
293
+ For Linux-specific issues (especially Ubuntu with snap Chromium), see [browser-linux-troubleshooting](https://docs.nexus.bot/browser-linux-troubleshooting).
package/docs/bun.md ADDED
@@ -0,0 +1,56 @@
1
+ # Bun (optional)
2
+
3
+ Goal: allow running this repo with Bun without maintaining a Bun lockfile or losing pnpm patch behavior.
4
+
5
+ ## Status
6
+
7
+ - pnpm remains the primary package manager/runtime for this repo.
8
+ - Bun can be used for local installs/builds/tests, but Bun currently **cannot use** `pnpm-lock.yaml` and will ignore it.
9
+
10
+ ## Install (no Bun lockfile)
11
+
12
+ Use Bun without writing `bun.lock`/`bun.lockb`:
13
+
14
+ ```sh
15
+ bun install --no-save
16
+ ```
17
+
18
+ This avoids maintaining two lockfiles. (`bun.lock`/`bun.lockb` are gitignored.)
19
+
20
+ ## Build / Test (Bun)
21
+
22
+ ```sh
23
+ bun run build
24
+ bun run vitest run
25
+ ```
26
+
27
+ ## pnpm patchedDependencies under Bun
28
+
29
+ pnpm supports `package.json#pnpm.patchedDependencies` and records it in `pnpm-lock.yaml`.
30
+ Bun does not support pnpm patches, so we apply them in `postinstall` when Bun is detected:
31
+
32
+ - `scripts/postinstall.js` runs only for Bun installs and applies every entry from `package.json#pnpm.patchedDependencies` into `node_modules/...` using `git apply` (idempotent).
33
+
34
+ To add a new patch that works in both pnpm + Bun:
35
+
36
+ 1. Add an entry to `package.json#pnpm.patchedDependencies`
37
+ 2. Add the patch file under `patches/`
38
+ 3. Run `pnpm install` (updates `pnpm-lock.yaml` patch hash)
39
+
40
+ ## Bun lifecycle scripts (blocked by default)
41
+
42
+ Bun may block dependency lifecycle scripts unless explicitly trusted (`bun pm untrusted` / `bun pm trust`).
43
+ For this repo, the commonly blocked scripts are not required:
44
+
45
+ - `@whiskeysockets/baileys` `preinstall`: checks Node major >= 20 (we run Node 22+).
46
+ - `protobufjs` `postinstall`: emits warnings about incompatible version schemes (no build artifacts).
47
+
48
+ If you hit a real runtime issue that requires these scripts, trust them explicitly:
49
+
50
+ ```sh
51
+ bun pm trust @whiskeysockets/baileys protobufjs
52
+ ```
53
+
54
+ ## Caveats
55
+
56
+ - Some scripts still hardcode pnpm (e.g. `docs:build`, `ui:*`, `protocol:check`). Run those via pnpm for now.
package/docs/camera.md ADDED
@@ -0,0 +1,152 @@
1
+ ---
2
+ summary: "Camera capture (iOS node + macOS app) for agent use: photos (jpg) and short video clips (mp4)"
3
+ read_when:
4
+ - Adding or modifying camera capture on iOS nodes or macOS
5
+ - Extending agent-accessible MEDIA temp-file workflows
6
+ ---
7
+
8
+ # Camera capture (agent)
9
+
10
+ Nexus supports **camera capture** for agent workflows:
11
+
12
+ - **iOS node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
13
+ - **Android node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
14
+ - **macOS app** (node via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
15
+
16
+ All camera access is gated behind **user-controlled settings**.
17
+
18
+ ## iOS node
19
+
20
+ ### User setting (default on)
21
+
22
+ - iOS Settings tab → **Camera** → **Allow Camera** (`camera.enabled`)
23
+ - Default: **on** (missing key is treated as enabled).
24
+ - When off: `camera.*` commands return `CAMERA_DISABLED`.
25
+
26
+ ### Commands (via Gateway `node.invoke`)
27
+
28
+ - `camera.list`
29
+ - Response payload:
30
+ - `devices`: array of `{ id, name, position, deviceType }`
31
+
32
+ - `camera.snap`
33
+ - Params:
34
+ - `facing`: `front|back` (default: `front`)
35
+ - `maxWidth`: number (optional; default `1600` on the iOS node)
36
+ - `quality`: `0..1` (optional; default `0.9`)
37
+ - `format`: currently `jpg`
38
+ - `delayMs`: number (optional; default `0`)
39
+ - `deviceId`: string (optional; from `camera.list`)
40
+ - Response payload:
41
+ - `format: "jpg"`
42
+ - `base64: "<...>"`
43
+ - `width`, `height`
44
+ - Payload guard: photos are recompressed to keep the base64 payload under 5 MB.
45
+
46
+ - `camera.clip`
47
+ - Params:
48
+ - `facing`: `front|back` (default: `front`)
49
+ - `durationMs`: number (default `3000`, clamped to a max of `60000`)
50
+ - `includeAudio`: boolean (default `true`)
51
+ - `format`: currently `mp4`
52
+ - `deviceId`: string (optional; from `camera.list`)
53
+ - Response payload:
54
+ - `format: "mp4"`
55
+ - `base64: "<...>"`
56
+ - `durationMs`
57
+ - `hasAudio`
58
+
59
+ ### Foreground requirement
60
+
61
+ Like `canvas.*`, the iOS node only allows `camera.*` commands in the **foreground**. Background invocations return `NODE_BACKGROUND_UNAVAILABLE`.
62
+
63
+ ### CLI helper (temp files + MEDIA)
64
+
65
+ The easiest way to get attachments is via the CLI helper, which writes decoded media to a temp file and prints `MEDIA:<path>`.
66
+
67
+ Examples:
68
+
69
+ ```bash
70
+ nexus nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
71
+ nexus nodes camera snap --node <id> --facing front
72
+ nexus nodes camera clip --node <id> --duration 3000
73
+ nexus nodes camera clip --node <id> --no-audio
74
+ ```
75
+
76
+ Notes:
77
+ - `nodes camera snap` defaults to **both** facings to give the agent both views.
78
+ - Output files are temporary (in the OS temp directory) unless you build your own wrapper.
79
+
80
+ ## Android node
81
+
82
+ ### User setting (default on)
83
+
84
+ - Android Settings sheet → **Camera** → **Allow Camera** (`camera.enabled`)
85
+ - Default: **on** (missing key is treated as enabled).
86
+ - When off: `camera.*` commands return `CAMERA_DISABLED`.
87
+
88
+ ### Permissions
89
+
90
+ - Android requires runtime permissions:
91
+ - `CAMERA` for both `camera.snap` and `camera.clip`.
92
+ - `RECORD_AUDIO` for `camera.clip` when `includeAudio=true`.
93
+
94
+ If permissions are missing, the app will prompt when possible; if denied, `camera.*` requests fail with a
95
+ `*_PERMISSION_REQUIRED` error.
96
+
97
+ ### Foreground requirement
98
+
99
+ Like `canvas.*`, the Android node only allows `camera.*` commands in the **foreground**. Background invocations return `NODE_BACKGROUND_UNAVAILABLE`.
100
+
101
+ ### Payload guard
102
+
103
+ Photos are recompressed to keep the base64 payload under 5 MB.
104
+
105
+ ## macOS app
106
+
107
+ ### User setting (default off)
108
+
109
+ The macOS companion app exposes a checkbox:
110
+
111
+ - **Settings → General → Allow Camera** (`nexus.cameraEnabled`)
112
+ - Default: **off**
113
+ - When off: camera requests return “Camera disabled by user”.
114
+
115
+ ### CLI helper (node invoke)
116
+
117
+ Use the main `nexus` CLI to invoke camera commands on the macOS node.
118
+
119
+ Examples:
120
+
121
+ ```bash
122
+ nexus nodes camera list --node <id> # list camera ids
123
+ nexus nodes camera snap --node <id> # prints MEDIA:<path>
124
+ nexus nodes camera snap --node <id> --max-width 1280
125
+ nexus nodes camera snap --node <id> --delay-ms 2000
126
+ nexus nodes camera snap --node <id> --device-id <id>
127
+ nexus nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
128
+ nexus nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
129
+ nexus nodes camera clip --node <id> --device-id <id>
130
+ nexus nodes camera clip --node <id> --no-audio
131
+ ```
132
+
133
+ Notes:
134
+ - `nexus nodes camera snap` defaults to `maxWidth=1600` unless overridden.
135
+ - On macOS, `camera.snap` waits `delayMs` (default 2000ms) after warm-up/exposure settle before capturing.
136
+ - Photo payloads are recompressed to keep base64 under 5 MB.
137
+
138
+ ## Safety + practical limits
139
+
140
+ - Camera and microphone access trigger the usual OS permission prompts (and require usage strings in Info.plist).
141
+ - Video clips are capped (currently `<= 60s`) to avoid oversized bridge payloads (base64 overhead + message limits).
142
+
143
+ ## macOS screen video (OS-level)
144
+
145
+ For *screen* video (not camera), use the macOS companion:
146
+
147
+ ```bash
148
+ nexus nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
149
+ ```
150
+
151
+ Notes:
152
+ - Requires macOS **Screen Recording** permission (TCC).