@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,119 @@
1
+ ---
2
+ summary: "How Nexus ingests session transcripts from NexusBot and Cursor (storage locations + adapter strategy)"
3
+ read_when:
4
+ - You want Nexus to index/review sessions across harnesses
5
+ - You are building a Cursor/NexusBot session adapter
6
+ ---
7
+
8
+ # Session ingestion (NexusBot + Cursor → Nexus)
9
+
10
+ Nexus wants a **harness-agnostic session/thread registry** that can index “work that happened” regardless of where it was initiated.
11
+
12
+ This doc records where sessions live today for:
13
+ - NexusBot / Nexus gateway runs (**JSONL transcripts on disk**)
14
+ - Cursor agent chats (**JSON stored inside VSCode-style SQLite DBs**)
15
+
16
+ ## Nexus/NexusBot gateway sessions (gateway-owned)
17
+
18
+ ### Session directory structure (NEW FORMAT)
19
+
20
+ As of 2026-01, Nexus uses an **agent-grouped, per-session directory** format:
21
+
22
+ Canonical default:
23
+
24
+ ```
25
+ ~/nexus/state/agents/<agentId>/sessions/<sessionKey>/
26
+ ├── session.json # Metadata (created, updated, surface, model, etc.)
27
+ ├── history.jsonl # Current active turns
28
+ ├── archives/ # Compacted history files (preserved forever)
29
+ │ ├── 001.jsonl # Full history before 1st compaction
30
+ │ ├── 002.jsonl # Full history before 2nd compaction
31
+ │ └── ...
32
+ └── summary.md # Current context summary (post-compaction)
33
+ ```
34
+
35
+ This format enables:
36
+ - Agent-grouped: All sessions for an agent live together
37
+ - Per-session isolation: Each session is self-contained
38
+ - Archive preservation: Searchable history even after compaction
39
+ - Cursor-style dynamic context discovery
40
+
41
+ ### Legacy session formats (migration sources)
42
+
43
+ Old flat format (sessions.json + JSONL transcripts):
44
+
45
+ ```
46
+ ~/.nexus/agents/<agentId>/sessions/sessions.json
47
+ ~/.nexus/agents/<agentId>/sessions/<sessionId>.jsonl
48
+ ~/.nexus/sessions/<sessionId>.jsonl
49
+ ```
50
+
51
+ Migration from old format happens automatically on first access.
52
+
53
+ Notes:
54
+ - Transcript format can vary by runtime; some lines are `{ role, content, ... }`, some may be wrapped.
55
+ - When ingesting, prefer “be liberal”: parse each JSON line; if it has a `.message` field, unwrap it, otherwise treat the object as the message.
56
+
57
+ ## Cursor sessions (IDE-owned)
58
+
59
+ Cursor (VSCode-based) persists AI chat state in SQLite DBs.
60
+
61
+ ### Per-workspace DBs
62
+
63
+ Cursor stores one SQLite DB per workspace folder:
64
+
65
+ ```
66
+ ~/Library/Application Support/Cursor/User/workspaceStorage/<hash>/state.vscdb
67
+ ```
68
+
69
+ `workspace.json` maps the `<hash>` folder back to the workspace path:
70
+
71
+ ```
72
+ ~/Library/Application Support/Cursor/User/workspaceStorage/<hash>/workspace.json
73
+ ```
74
+
75
+ Example:
76
+ - `workspace.json` contains `{"folder":"file:///Users/tyler/Desktop/projects"}`
77
+
78
+ ### Where the actual AI Chat transcript lives
79
+
80
+ In the per-workspace `state.vscdb`, the full “AI Chat” data is stored as JSON text under:
81
+
82
+ - `ItemTable.key = "workbench.panel.aichat.view.aichat.chatdata"`
83
+
84
+ That JSON includes:
85
+ - `tabs[]` with:
86
+ - `tabId`
87
+ - `chatTitle`
88
+ - `bubbles[]` (messages + context selections)
89
+
90
+ Bubble notes (observed):
91
+ - User bubbles: `type: "user"`, `messageType: 2`
92
+ - content often lives in `initText` / `richText` (Lexical JSON), not `rawText`
93
+ - Assistant bubbles: `type: "assistant"`, `messageType: 3`
94
+ - content lives in `text` / `rawText`
95
+
96
+ Related (useful but not required for ingestion):
97
+ - `ItemTable.key = "aiService.prompts"`
98
+ - `ItemTable.key = "aiService.generations"`
99
+
100
+ ## Adapter strategy (90% equivalent quickly)
101
+
102
+ ### Goal
103
+
104
+ Build an adapter that:
105
+ - Scans NexusBot transcripts from state dir
106
+ - Extracts Cursor transcripts from `state.vscdb`
107
+ - Writes a Nexus-owned index so sessions are searchable/reviewable
108
+
109
+ ### Minimal output
110
+
111
+ - `index.json` (a lightweight catalog)
112
+ - Cursor tabs exported as JSONL for easy reading/search
113
+ - NexusBot sessions referenced by path (optionally copied)
114
+
115
+ ## Implementation
116
+
117
+ See `nexus sessions-ingest --help` (Nexus fork) once implemented.
118
+
119
+
@@ -0,0 +1,154 @@
1
+ ---
2
+ summary: "Agent session tools for listing sessions, fetching history, and sending cross-session messages"
3
+ read_when:
4
+ - Adding or modifying session tools
5
+ ---
6
+
7
+ # Session Tools
8
+
9
+ Goal: small, hard-to-misuse tool set so agents can list sessions, fetch history, and send to another session.
10
+
11
+ ## Tool Names
12
+ - `sessions_list`
13
+ - `sessions_history`
14
+ - `sessions_send`
15
+ - `sessions_spawn`
16
+
17
+ ## Key Model
18
+ - Main direct chat bucket is always the literal key `"main"`.
19
+ - Group chats use `<provider>:group:<id>` or `<provider>:channel:<id>`.
20
+ - Cron jobs use `cron:<job.id>`.
21
+ - Hooks use `hook:<uuid>` unless explicitly set.
22
+ - Node bridge uses `node-<nodeId>` unless explicitly set.
23
+
24
+ `global` and `unknown` are internal-only and never listed. If `session.scope = "global"`, we alias it to `main` for all tools so callers never see `global`.
25
+
26
+ ## sessions_list
27
+ List sessions as an array of rows.
28
+
29
+ Parameters:
30
+ - `kinds?: string[]` filter: any of `"main" | "group" | "cron" | "hook" | "node" | "other"`
31
+ - `limit?: number` max rows (default: server default, clamp e.g. 200)
32
+ - `activeMinutes?: number` only sessions updated within N minutes
33
+ - `messageLimit?: number` 0 = no messages (default 0); >0 = include last N messages
34
+
35
+ Behavior:
36
+ - `messageLimit > 0` fetches `chat.history` per session and includes the last N messages.
37
+ - Tool results are filtered out in list output; use `sessions_history` for tool messages.
38
+ - When running in a **sandboxed** agent session, session tools default to **spawned-only visibility** (see below).
39
+
40
+ Row shape (JSON):
41
+ - `key`: session key (string)
42
+ - `kind`: `main | group | cron | hook | node | other`
43
+ - `provider`: `whatsapp | telegram | discord | signal | imessage | webchat | internal | unknown`
44
+ - `displayName` (group display label if available)
45
+ - `updatedAt` (ms)
46
+ - `sessionId`
47
+ - `model`, `contextTokens`, `totalTokens`
48
+ - `thinkingLevel`, `verboseLevel`, `systemSent`, `abortedLastRun`
49
+ - `sendPolicy` (session override if set)
50
+ - `lastProvider`, `lastTo`
51
+ - `transcriptPath` (best-effort path derived from store dir + sessionId)
52
+ - `messages?` (only when `messageLimit > 0`)
53
+
54
+ ## sessions_history
55
+ Fetch transcript for one session.
56
+
57
+ Parameters:
58
+ - `sessionKey` (required)
59
+ - `limit?: number` max messages (server clamps)
60
+ - `includeTools?: boolean` (default false)
61
+
62
+ Behavior:
63
+ - `includeTools=false` filters `role: "toolResult"` messages.
64
+ - Returns messages array in the raw transcript format.
65
+
66
+ ## sessions_send
67
+ Send a message into another session.
68
+
69
+ Parameters:
70
+ - `sessionKey` (required)
71
+ - `message` (required)
72
+ - `timeoutSeconds?: number` (default >0; 0 = fire-and-forget)
73
+
74
+ Behavior:
75
+ - `timeoutSeconds = 0`: enqueue and return `{ runId, status: "accepted" }`.
76
+ - `timeoutSeconds > 0`: wait up to N seconds for completion, then return `{ runId, status: "ok", reply }`.
77
+ - If wait times out: `{ runId, status: "timeout", error }`. Run continues; call `sessions_history` later.
78
+ - If the run fails: `{ runId, status: "error", error }`.
79
+ - Waits via gateway `agent.wait` (server-side) so reconnects don't drop the wait.
80
+ - Agent-to-agent message context is injected for the primary run.
81
+ - After the primary run completes, Nexus runs a **reply-back loop**:
82
+ - Round 2+ alternates between requester and target agents.
83
+ - Reply exactly `REPLY_SKIP` to stop the ping‑pong.
84
+ - Max turns is `session.agentToAgent.maxPingPongTurns` (0–5, default 5).
85
+ - Once the loop ends, Nexus runs the **agent‑to‑agent announce step** (target agent only):
86
+ - Reply exactly `ANNOUNCE_SKIP` to stay silent.
87
+ - Any other reply is sent to the target provider.
88
+ - Announce step includes the original request + round‑1 reply + latest ping‑pong reply.
89
+
90
+ ## Provider Field
91
+ - For groups, `provider` is the provider recorded on the session entry.
92
+ - For direct chats, `provider` maps from `lastProvider`.
93
+ - For cron/hook/node, `provider` is `internal`.
94
+ - If missing, `provider` is `unknown`.
95
+
96
+ ## Security / Send Policy
97
+ Policy-based blocking by provider/chat type (not per session id).
98
+
99
+ ```json
100
+ {
101
+ "session": {
102
+ "sendPolicy": {
103
+ "rules": [
104
+ {
105
+ "match": { "provider": "discord", "chatType": "group" },
106
+ "action": "deny"
107
+ }
108
+ ],
109
+ "default": "allow"
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ Runtime override (per session entry):
116
+ - `sendPolicy: "allow" | "deny"` (unset = inherit config)
117
+ - Settable via `sessions.patch` or owner-only `/send on|off|inherit`.
118
+
119
+ Enforcement points:
120
+ - `chat.send` / `agent` (gateway)
121
+ - auto-reply delivery logic
122
+
123
+ ## sessions_spawn
124
+ Spawn a sub-agent run in an isolated session and announce the result back to the requester chat provider.
125
+
126
+ Parameters:
127
+ - `task` (required)
128
+ - `label?` (optional; used for logs/UI)
129
+ - `timeoutSeconds?` (default 0; 0 = fire-and-forget)
130
+ - `cleanup?` (`delete|keep`, default `delete`)
131
+
132
+ Behavior:
133
+ - Starts a new `subagent:<uuid>` session with `deliver: false`.
134
+ - Sub-agents default to the full tool set **minus session tools** (configurable via `agent.subagents.tools`).
135
+ - Sub-agents are not allowed to call `sessions_spawn` (no sub-agent → sub-agent spawning).
136
+ - After completion (or best-effort wait), Nexus runs a sub-agent **announce step** and posts the result to the requester chat provider.
137
+ - Reply exactly `ANNOUNCE_SKIP` during the announce step to stay silent.
138
+
139
+ ## Sandbox Session Visibility
140
+
141
+ Sandboxed sessions can use session tools, but by default they only see sessions they spawned via `sessions_spawn`.
142
+
143
+ Config:
144
+
145
+ ```json5
146
+ {
147
+ agent: {
148
+ sandbox: {
149
+ // default: "spawned"
150
+ sessionToolsVisibility: "spawned" // or "all"
151
+ }
152
+ }
153
+ }
154
+ ```
@@ -0,0 +1,85 @@
1
+ ---
2
+ summary: "Session management rules, keys, and persistence for chats"
3
+ read_when:
4
+ - Modifying session handling or storage
5
+ ---
6
+ # Session Management
7
+
8
+ Nexus treats **one direct-chat session per agent** as primary. Direct chats collapse to `agent:<agentId>:<mainKey>` (default `main`), while group/channel chats get their own keys. `session.mainKey` is honored.
9
+
10
+ ## Gateway is the source of truth
11
+ All session state is **owned by the gateway** (the “master” Nexus). UI clients (macOS app, WebChat, etc.) must query the gateway for session lists and token counts instead of reading local files.
12
+
13
+ - In **remote mode**, the session store you care about lives on the remote gateway host, not your Mac.
14
+ - Token counts shown in UIs come from the gateway’s store fields (`inputTokens`, `outputTokens`, `totalTokens`, `contextTokens`). Clients do not parse JSONL transcripts to “fix up” totals.
15
+
16
+ ## Where state lives
17
+ - On the **gateway host**:
18
+ - Store file: `~/nexus/state/agents/<agentId>/sessions/sessions.json` (per agent).
19
+ - Transcripts: `~/nexus/state/agents/<agentId>/sessions/<SessionId>.jsonl` (one file per session id).
20
+ - The store is a map `sessionKey -> { sessionId, updatedAt, ... }`. Deleting entries is safe; they are recreated on demand.
21
+ - Group entries may include `displayName`, `provider`, `subject`, `room`, and `space` to label sessions in UIs.
22
+ - Nexus does **not** read legacy Pi/Tau session folders.
23
+
24
+ ## Mapping transports → session keys
25
+ - Direct chats collapse to the per-agent primary key: `agent:<agentId>:<mainKey>`.
26
+ - Multiple phone numbers and providers can map to the same agent main key; they act as transports into one conversation.
27
+ - Group chats isolate state: `agent:<agentId>:<provider>:group:<id>` (rooms/channels use `agent:<agentId>:<provider>:channel:<id>`).
28
+ - Legacy `group:<id>` keys are still recognized for migration.
29
+ - Other sources:
30
+ - Cron jobs: `cron:<job.id>`
31
+ - Webhooks: `hook:<uuid>` (unless explicitly set by the hook)
32
+ - Node bridge runs: `node-<nodeId>`
33
+
34
+ ## Lifecyle
35
+ - Idle expiry: `session.idleMinutes` (default 60). After the timeout a new `sessionId` is minted on the next message.
36
+ - Reset triggers: exact `/new` or `/reset` (plus any extras in `resetTriggers`) start a fresh session id and pass the remainder of the message through. If `/new` or `/reset` is sent alone, Nexus runs a short “hello” greeting turn to confirm the reset.
37
+ - Manual reset: delete specific keys from the store or remove the JSONL transcript; the next message recreates them.
38
+
39
+ ## Send policy (optional)
40
+ Block delivery for specific session types without listing individual ids.
41
+
42
+ ```json5
43
+ {
44
+ session: {
45
+ sendPolicy: {
46
+ rules: [
47
+ { action: "deny", match: { provider: "discord", chatType: "group" } },
48
+ { action: "deny", match: { keyPrefix: "cron:" } }
49
+ ],
50
+ default: "allow"
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ Runtime override (owner only):
57
+ - `/send on` → allow for this session
58
+ - `/send off` → deny for this session
59
+ - `/send inherit` → clear override and use config rules
60
+
61
+ ## Configuration (optional rename example)
62
+ ```json5
63
+ // ~/nexus/state/nexus.json
64
+ {
65
+ session: {
66
+ scope: "per-sender", // keep group keys separate
67
+ idleMinutes: 120,
68
+ resetTriggers: ["/new", "/reset"],
69
+ store: "~/nexus/state/agents/{agentId}/sessions/sessions.json",
70
+ mainKey: "main",
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Inspecting
76
+ - `pnpm nexus status` — shows store path and recent sessions.
77
+ - `pnpm nexus sessions --json` — dumps every entry (filter with `--active <minutes>`).
78
+ - `pnpm nexus gateway call sessions.list --params '{}'` — fetch sessions from the running gateway (use `--url`/`--token` for remote gateway access).
79
+ - Send `/status` in chat to see whether the agent is reachable, how much of the session context is used, current thinking/verbose toggles, and when your WhatsApp web creds were last refreshed (helps spot relink needs).
80
+ - Send `/compact` (optional instructions) to summarize older context and free up window space.
81
+ - JSONL transcripts can be opened directly to review full turns.
82
+
83
+ ## Tips
84
+ - Keep the primary key dedicated to 1:1 traffic; let groups keep their own keys.
85
+ - When automating cleanup, delete individual keys instead of the whole store to preserve context elsewhere.
@@ -0,0 +1,8 @@
1
+ ---
2
+ summary: "Alias for session management docs"
3
+ read_when:
4
+ - You looked for docs/sessions.md; canonical doc lives in docs/session.md
5
+ ---
6
+ # Sessions
7
+
8
+ Canonical session management docs live in [`docs/session.md`](https://docs.nexus.bot/session).
package/docs/setup.md ADDED
@@ -0,0 +1,131 @@
1
+ ---
2
+ summary: "Setup guide: keep your Nexus setup tailored while staying up-to-date"
3
+ read_when:
4
+ - Setting up a new machine
5
+ - You want “latest + greatest” without breaking your personal setup
6
+ ---
7
+
8
+ # Setup
9
+
10
+ Last updated: 2026-01-01
11
+
12
+ ## TL;DR
13
+ - **Tailoring lives outside the repo:** `~/nexus` (workspace) + `~/nexus/state/nexus.json` (config).
14
+ - **Stable workflow:** install the macOS app; let it run the bundled Gateway.
15
+ - **Bleeding edge workflow:** run the Gateway yourself via `pnpm gateway:watch`, then point the macOS app at it using **Debug Settings → Gateway → Attach only**.
16
+
17
+ ## Prereqs (from source)
18
+ - Node `>=22`
19
+ - `pnpm`
20
+ - Docker (optional; only for containerized setup/e2e — see [`docs/docker.md`](https://docs.nexus.bot/docker))
21
+
22
+ ## Tailoring strategy (so updates don’t hurt)
23
+
24
+ If you want “100% tailored to me” *and* easy updates, keep your customization in:
25
+
26
+ - **Config:** `~/nexus/state/nexus.json` (JSON/JSON5-ish)
27
+ - **Workspace:** `~/nexus` (skills, prompts, memories; make it a private git repo)
28
+
29
+ Bootstrap once:
30
+
31
+ ```bash
32
+ nexus setup
33
+ ```
34
+
35
+ From inside this repo, use the local CLI entry:
36
+
37
+ ```bash
38
+ pnpm nexus setup
39
+ ```
40
+
41
+ ## Stable workflow (macOS app first)
42
+
43
+ 1) Install + launch **Nexus.app** (menu bar).
44
+ 2) Complete the onboarding/permissions checklist (TCC prompts).
45
+ 3) Ensure Gateway is **Local** and running (the app manages it).
46
+ 4) Link surfaces (example: WhatsApp):
47
+
48
+ ```bash
49
+ nexus login
50
+ ```
51
+
52
+ 5) Sanity check:
53
+
54
+ ```bash
55
+ nexus health
56
+ ```
57
+
58
+ If onboarding is still WIP/broken on your build:
59
+ - Run `nexus setup`, then `nexus login`, then start the Gateway manually (`nexus gateway`).
60
+
61
+ ## Bleeding edge workflow (Gateway in a terminal)
62
+
63
+ Goal: work on the TypeScript Gateway, get hot reload, keep the macOS app UI attached.
64
+
65
+ ### 0) (Optional) Run the macOS app from source too
66
+
67
+ If you also want the macOS app on the bleeding edge:
68
+
69
+ ```bash
70
+ ./scripts/restart-mac.sh
71
+ ```
72
+
73
+ ### 1) Start the dev Gateway
74
+
75
+ ```bash
76
+ pnpm install
77
+ pnpm gateway:watch
78
+ ```
79
+
80
+ `gateway:watch` runs `src/index.ts gateway --force` and reloads on `src/**/*.ts` changes.
81
+
82
+ ### 2) Point the macOS app at your running Gateway
83
+
84
+ In **Nexus.app**:
85
+
86
+ - Connection Mode: **Local**
87
+ - Settings → **Debug Settings** → **Gateway** → enable **Attach only**
88
+
89
+ This makes the app **only connect to an already-running gateway** and **never spawn** its own.
90
+
91
+ ### 3) Verify
92
+
93
+ - In-app Gateway status should read **“Using existing gateway …”**
94
+ - Or via CLI:
95
+
96
+ ```bash
97
+ pnpm nexus health
98
+ ```
99
+
100
+ ### Common footguns
101
+ - **Attach only enabled, but nothing is running:** app shows “Attach-only enabled; no gateway to attach”.
102
+ - **Wrong port:** Gateway WS defaults to `ws://127.0.0.1:18789`; keep app + CLI on the same port.
103
+ - **Where state lives:**
104
+ - Credentials: `~/nexus/state/credentials/`
105
+ - Sessions/logs: `~/nexus/state/sessions/`
106
+
107
+ ## Updating (without wrecking your setup)
108
+
109
+ - Keep `~/nexus` and `~/nexus/state/` as “your stuff”; don’t put personal prompts/config into the `nexus` repo.
110
+ - Updating source: `git pull` + `pnpm install` (when lockfile changed) + keep using `pnpm gateway:watch`.
111
+
112
+ ## Linux (systemd user service)
113
+
114
+ Linux installs use a systemd **user** service. By default, systemd stops user
115
+ services on logout/idle, which kills the Gateway. Onboarding attempts to enable
116
+ lingering for you (may prompt for sudo). If it’s still off, run:
117
+
118
+ ```bash
119
+ sudo loginctl enable-linger $USER
120
+ ```
121
+
122
+ For always-on or multi-user servers, consider a **system** service instead of a
123
+ user service (no lingering needed). See [`docs/gateway.md`](https://docs.nexus.bot/gateway) for the systemd notes.
124
+
125
+ ## Related docs
126
+
127
+ - [`docs/gateway.md`](https://docs.nexus.bot/gateway) (Gateway runbook; flags, supervision, ports)
128
+ - [`docs/configuration.md`](https://docs.nexus.bot/configuration) (config schema + examples)
129
+ - [`docs/discord.md`](https://docs.nexus.bot/discord) and [`docs/telegram.md`](https://docs.nexus.bot/telegram) (reply tags + replyToMode settings)
130
+ - [`docs/nexus.md`](https://docs.nexus.bot/nexus) (personal assistant setup)
131
+ - [`docs/macos.md`](https://docs.nexus.bot/macos) (macOS app behavior; gateway lifecycle + “Attach only”)
@@ -0,0 +1,37 @@
1
+ ---
2
+ summary: "Real-world showcases of what Nexus can do"
3
+ read_when:
4
+ - You want inspiration or proof of capability
5
+ ---
6
+ # Showcase
7
+
8
+ Real projects from the community. Highlights from #showcase (Jan 2–5, 2026).
9
+
10
+ ## Automation & real-world outcomes
11
+ - **Visual morning briefing scene** — Scheduled prompt generates a single "scene" image each morning (weather, tasks, date, favorite post/quote) via a Nexus persona, delivered in Telegram. https://x.com/buddyhadry/status/2010005331925954739
12
+ - **Grocery autopilot (Picnic)** — Skill built around an unofficial Picnic API client. Pulls order history, infers preferred brands, maps recipes to cart, completes order in minutes. https://github.com/timkrase/nexus-picnic-skill
13
+ - **Grocery autopilot (Picnic, alt)** — Another Picnic-based skill built via the `picnic-api` package. https://github.com/MRVDH/picnic-api
14
+ - **German rail planning** — Go CLI for Deutsche Bahn; skill picks best connections given time windows and preferences. https://github.com/timkrase/dbrest-cli + https://github.com/timkrase/nexus-skills/tree/main/db-bahn
15
+ - **Accounting intake** — Collect PDFs from email, prep for tax consultant (monthly accounting batch). (No link shared.)
16
+
17
+ ## Knowledge & memory systems
18
+ - **WhatsApp memory vault** — Ingests full exports, transcribes 1k+ voice notes, cross‑checks with git logs, outputs linked MD reports + ongoing indexing. (No link shared.)
19
+ - **Karakeep semantic search** — Sidecar adds vector search to Karakeep bookmarks (Qdrant + OpenAI/Ollama), includes Nexus skill. https://github.com/jamesbrooksco/karakeep-semantic-search
20
+ - **Inside‑Out‑2 style memory** — Separate memory manager app turns session files into memories → beliefs → self model. (No link shared.)
21
+
22
+ ## Voice, docs, and assistants on the phone
23
+ - **Nexusia phone bridge** — Vapi voice assistant ↔ Nexus HTTP bridge; near‑real‑time phone calls. https://github.com/alejandroOPI/nexusia-bridge
24
+ - **Google Docs edit skill** — Rich‑text editing skill built fast with Claude Code. (No link shared.)
25
+ - **OpenRouter transcription skill** — Multi‑lingual audio transcription via OpenRouter (Gemini etc). NexusHub: https://nexushub.com/obviyus/openrouter-transcribe (user/slug link)
26
+
27
+ ## Infrastructure & deployment
28
+ - **Home Assistant OS gateway add‑on** — Nexus gateway running on HA OS (Raspberry Pi), with SSH tunnel support + persistent state in /config. https://github.com/ngutman/nexus-ha-addon
29
+ - **Home Assistant skill** — Control/automate HA via NexusHub. https://nexushub.com/skills/homeassistant
30
+ - **Nix packaging** — Batteries‑included nixified nexus config. https://github.com/joshp123/nix-nexus
31
+ - **CalDAV skill** — khal/vdirsyncer based calendar skill. NexusHub: caldav-calendar → https://nexushub.com/skills/caldav-calendar
32
+
33
+ ## Home + hardware
34
+ - **Roborock integration** — Plugin for robot vacuum control. https://github.com/joshp123/gohome/tree/main/plugins/roborock
35
+
36
+ ## Community builds (non‑Nexus but made with/around it)
37
+ - **StarSwap marketplace** — Full astronomy gear marketplace. https://star-swap.com/
package/docs/signal.md ADDED
@@ -0,0 +1,122 @@
1
+ ---
2
+ summary: "Signal support via signal-cli (JSON-RPC + SSE), setup, and number model"
3
+ read_when:
4
+ - Setting up Signal support
5
+ - Debugging Signal send/receive
6
+ ---
7
+ # Signal (signal-cli)
8
+
9
+ Status: external CLI integration only. No libsignal embedding.
10
+
11
+ ## Why
12
+ - Signal OSS stack is GPL/AGPL; not compatible with Nexus MIT if bundled.
13
+ - signal-cli is unofficial; must stay up to date (Signal server churn).
14
+
15
+ ## The “number model” (important)
16
+ - Nexus is a **device** connected via `signal-cli`.
17
+ - If you run `signal-cli` on **your personal Signal account**, Nexus will **not** respond to messages sent from that same account (loop protection: ignore sender==account).
18
+ - Result: you **cannot** “text yourself” to chat with the AI.
19
+ - For “I text her, she texts me back” you want a **separate Signal account/number for the bot**:
20
+ - Bot number runs `signal-cli` (linked device)
21
+ - Your personal number is in `signal.allowFrom`
22
+ - You DM the bot number; Nexus replies back to you
23
+
24
+ You can still run Nexus on your own Signal account if your goal is “respond to other people as me”, but not for self-chat.
25
+
26
+ ## Model
27
+ - Run `signal-cli` as separate process (user-installed).
28
+ - Prefer `daemon --http=127.0.0.1:PORT` for JSON-RPC + SSE.
29
+ - Alternative: `jsonRpc` mode over stdin/stdout.
30
+
31
+ ## Quickstart (bot number)
32
+ 1) Install `signal-cli` (keep Java installed).
33
+ - If you use the CLI wizard, it can auto-install to `~/nexus/state/tools/signal-cli/...`.
34
+ - If you want a pinned version (example: `v0.13.22`), install manually:
35
+ - Download the release asset for your platform from GitHub (tag `v0.13.22`).
36
+ - Extract it somewhere stable (example: `~/nexus/state/tools/signal-cli/0.13.22/`).
37
+ - Set `signal.cliPath` to the extracted `signal-cli` binary path.
38
+ 2) Link the bot account as a device:
39
+ - Run: `signal-cli link -n "Nexus"`
40
+ - Scan QR in Signal: Settings → Linked Devices → Link New Device
41
+ - Verify: `signal-cli listAccounts` includes the bot E.164
42
+ 3) Configure `~/nexus/state/nexus.json`:
43
+ ```json5
44
+ {
45
+ signal: {
46
+ enabled: true,
47
+ account: "+15551234567", // bot number (recommended)
48
+ cliPath: "signal-cli",
49
+ autoStart: true,
50
+ httpHost: "127.0.0.1",
51
+ httpPort: 8080,
52
+
53
+ // Who is allowed to talk to the bot (DMs)
54
+ dmPolicy: "pairing", // pairing | allowlist | open | disabled
55
+ allowFrom: ["+15557654321"], // your personal number ("open" requires ["*"])
56
+
57
+ // Group policy + allowlist
58
+ groupPolicy: "open",
59
+ groupAllowFrom: ["+15557654321"]
60
+ }
61
+ }
62
+ ```
63
+ 4) Run gateway; sanity probe:
64
+ - `nexus gateway call providers.status --params '{"probe":true}'`
65
+ - Expect `signal.probe.ok=true` and `signal.probe.version`.
66
+ 5) DM the bot number from your phone; Nexus replies.
67
+
68
+ ## DM pairing
69
+ - Default: `signal.dmPolicy="pairing"` — unknown DM senders get a pairing code.
70
+ - Approve via: `nexus pairing approve --provider signal <code>`.
71
+
72
+ ## “Do I need a separate number?”
73
+ - If you want “I text her and she texts me back”, yes: **use a separate Signal account/number for the bot**.
74
+ - Your personal account can run `signal-cli`, but you can’t self-chat (Signal loop protection; Nexus ignores sender==account).
75
+
76
+ If you have a second phone:
77
+ - Create/activate the bot number on that phone.
78
+ - Run `signal-cli link -n "Nexus"` on your Mac, scan the QR on the bot phone.
79
+ - Put your personal number in `signal.allowFrom`, then DM the bot number from your personal phone.
80
+
81
+ ## Endpoints (daemon --http)
82
+ - `POST /api/v1/rpc` JSON-RPC request (single or batch).
83
+ - `GET /api/v1/events` SSE stream of `receive` notifications.
84
+ - `GET /api/v1/check` health probe (200 = up).
85
+
86
+ ## Multi-account
87
+ - Start daemon without `-a`.
88
+ - Include `params.account` (E164) on JSON-RPC calls.
89
+ - SSE `?account=+E164` filters events; no param = all accounts.
90
+
91
+ ## Troubleshooting
92
+ - Gateway log coloring: `signal-cli: ...` lines are classified by severity; red means “treat this as an error”.
93
+ - `Failed to initialize HTTP Server` typically means the daemon can’t bind the HTTP port (already in use). Stop the other daemon or change `signal.httpPort`.
94
+
95
+ ## Minimal RPC surface
96
+ - `send` (recipient/groupId/username, message, attachments).
97
+ - `listGroups` (map group IDs).
98
+ - `subscribeReceive` / `unsubscribeReceive` (if manual receive).
99
+ - `startLink` / `finishLink` (optional device link flow).
100
+
101
+ ## Addressing (send targets)
102
+ - Direct: `signal:+15551234567` (or plain `+15551234567`)
103
+ - Groups: `signal:group:<groupId>`
104
+ - Usernames: `username:<name>` / `u:<name>`
105
+
106
+ ## Process plan (Nexus adapter)
107
+ 1) Detect `signal-cli` binary; refuse if missing.
108
+ 2) Launch daemon (HTTP preferred), store PID.
109
+ 3) Poll `/api/v1/check` until ready.
110
+ 4) Open SSE stream; parse `event: receive`.
111
+ 5) Translate receive payload into Nexus provider model.
112
+ 6) On SSE disconnect, backoff + reconnect.
113
+
114
+ ## Storage
115
+ - signal-cli data lives in `$XDG_DATA_HOME/signal-cli/data` or
116
+ `$HOME/.local/share/signal-cli/data`.
117
+
118
+ ## References (local)
119
+ - `~/Projects/oss/signal-cli/README.md`
120
+ - `~/Projects/oss/signal-cli/man/signal-cli-jsonrpc.5.adoc`
121
+ - `~/Projects/oss/signal-cli/src/main/java/org/asamk/signal/http/HttpServerHandler.java`
122
+ - `~/Projects/oss/signal-cli/src/main/java/org/asamk/signal/jsonrpc/SignalJsonRpcDispatcherHandler.java`