@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,310 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Summarize CodexBar local cost usage by model.
4
+
5
+ Defaults to current model (most recent daily entry), or list all models.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import json
12
+ import os
13
+ import subprocess
14
+ import sys
15
+ from dataclasses import dataclass
16
+ from datetime import date, datetime, timedelta
17
+ from typing import Any, Dict, Iterable, List, Optional, Tuple
18
+
19
+
20
+ def eprint(msg: str) -> None:
21
+ print(msg, file=sys.stderr)
22
+
23
+
24
+ def run_codexbar_cost(provider: str) -> List[Dict[str, Any]]:
25
+ cmd = ["codexbar", "cost", "--format", "json", "--provider", provider]
26
+ try:
27
+ output = subprocess.check_output(cmd, text=True)
28
+ except FileNotFoundError:
29
+ raise RuntimeError("codexbar not found on PATH. Install CodexBar CLI first.")
30
+ except subprocess.CalledProcessError as exc:
31
+ raise RuntimeError(f"codexbar cost failed (exit {exc.returncode}).")
32
+ try:
33
+ payload = json.loads(output)
34
+ except json.JSONDecodeError as exc:
35
+ raise RuntimeError(f"Failed to parse codexbar JSON output: {exc}")
36
+ if not isinstance(payload, list):
37
+ raise RuntimeError("Expected codexbar cost JSON array.")
38
+ return payload
39
+
40
+
41
+ def load_payload(input_path: Optional[str], provider: str) -> Dict[str, Any]:
42
+ if input_path:
43
+ if input_path == "-":
44
+ raw = sys.stdin.read()
45
+ else:
46
+ with open(input_path, "r", encoding="utf-8") as handle:
47
+ raw = handle.read()
48
+ data = json.loads(raw)
49
+ else:
50
+ data = run_codexbar_cost(provider)
51
+
52
+ if isinstance(data, dict):
53
+ return data
54
+
55
+ if isinstance(data, list):
56
+ for entry in data:
57
+ if isinstance(entry, dict) and entry.get("provider") == provider:
58
+ return entry
59
+ raise RuntimeError(f"Provider '{provider}' not found in codexbar payload.")
60
+
61
+ raise RuntimeError("Unsupported JSON input format.")
62
+
63
+
64
+ @dataclass
65
+ class ModelCost:
66
+ model: str
67
+ cost: float
68
+
69
+
70
+ def parse_daily_entries(payload: Dict[str, Any]) -> List[Dict[str, Any]]:
71
+ daily = payload.get("daily")
72
+ if not daily:
73
+ return []
74
+ if not isinstance(daily, list):
75
+ return []
76
+ return [entry for entry in daily if isinstance(entry, dict)]
77
+
78
+
79
+ def parse_date(value: str) -> Optional[date]:
80
+ try:
81
+ return datetime.strptime(value, "%Y-%m-%d").date()
82
+ except Exception:
83
+ return None
84
+
85
+
86
+ def filter_by_days(entries: List[Dict[str, Any]], days: Optional[int]) -> List[Dict[str, Any]]:
87
+ if not days:
88
+ return entries
89
+ cutoff = date.today() - timedelta(days=days - 1)
90
+ filtered: List[Dict[str, Any]] = []
91
+ for entry in entries:
92
+ day = entry.get("date")
93
+ if not isinstance(day, str):
94
+ continue
95
+ parsed = parse_date(day)
96
+ if parsed and parsed >= cutoff:
97
+ filtered.append(entry)
98
+ return filtered
99
+
100
+
101
+ def aggregate_costs(entries: Iterable[Dict[str, Any]]) -> Dict[str, float]:
102
+ totals: Dict[str, float] = {}
103
+ for entry in entries:
104
+ breakdowns = entry.get("modelBreakdowns")
105
+ if not breakdowns:
106
+ continue
107
+ if not isinstance(breakdowns, list):
108
+ continue
109
+ for item in breakdowns:
110
+ if not isinstance(item, dict):
111
+ continue
112
+ model = item.get("modelName")
113
+ cost = item.get("cost")
114
+ if not isinstance(model, str):
115
+ continue
116
+ if not isinstance(cost, (int, float)):
117
+ continue
118
+ totals[model] = totals.get(model, 0.0) + float(cost)
119
+ return totals
120
+
121
+
122
+ def pick_current_model(entries: List[Dict[str, Any]]) -> Tuple[Optional[str], Optional[str]]:
123
+ if not entries:
124
+ return None, None
125
+ sorted_entries = sorted(
126
+ entries,
127
+ key=lambda entry: entry.get("date") or "",
128
+ )
129
+ for entry in reversed(sorted_entries):
130
+ breakdowns = entry.get("modelBreakdowns")
131
+ if isinstance(breakdowns, list) and breakdowns:
132
+ scored: List[ModelCost] = []
133
+ for item in breakdowns:
134
+ if not isinstance(item, dict):
135
+ continue
136
+ model = item.get("modelName")
137
+ cost = item.get("cost")
138
+ if isinstance(model, str) and isinstance(cost, (int, float)):
139
+ scored.append(ModelCost(model=model, cost=float(cost)))
140
+ if scored:
141
+ scored.sort(key=lambda item: item.cost, reverse=True)
142
+ return scored[0].model, entry.get("date") if isinstance(entry.get("date"), str) else None
143
+ models_used = entry.get("modelsUsed")
144
+ if isinstance(models_used, list) and models_used:
145
+ last = models_used[-1]
146
+ if isinstance(last, str):
147
+ return last, entry.get("date") if isinstance(entry.get("date"), str) else None
148
+ return None, None
149
+
150
+
151
+ def usd(value: Optional[float]) -> str:
152
+ if value is None:
153
+ return "—"
154
+ return f"${value:,.2f}"
155
+
156
+
157
+ def latest_day_cost(entries: List[Dict[str, Any]], model: str) -> Tuple[Optional[str], Optional[float]]:
158
+ if not entries:
159
+ return None, None
160
+ sorted_entries = sorted(
161
+ entries,
162
+ key=lambda entry: entry.get("date") or "",
163
+ )
164
+ for entry in reversed(sorted_entries):
165
+ breakdowns = entry.get("modelBreakdowns")
166
+ if not isinstance(breakdowns, list):
167
+ continue
168
+ for item in breakdowns:
169
+ if not isinstance(item, dict):
170
+ continue
171
+ if item.get("modelName") == model:
172
+ cost = item.get("cost") if isinstance(item.get("cost"), (int, float)) else None
173
+ day = entry.get("date") if isinstance(entry.get("date"), str) else None
174
+ return day, float(cost) if cost is not None else None
175
+ return None, None
176
+
177
+
178
+ def render_text_current(
179
+ provider: str,
180
+ model: str,
181
+ latest_date: Optional[str],
182
+ total_cost: Optional[float],
183
+ latest_cost: Optional[float],
184
+ latest_cost_date: Optional[str],
185
+ entry_count: int,
186
+ ) -> str:
187
+ lines = [f"Provider: {provider}", f"Current model: {model}"]
188
+ if latest_date:
189
+ lines.append(f"Latest model date: {latest_date}")
190
+ lines.append(f"Total cost (rows): {usd(total_cost)}")
191
+ if latest_cost_date:
192
+ lines.append(f"Latest day cost: {usd(latest_cost)} ({latest_cost_date})")
193
+ lines.append(f"Daily rows: {entry_count}")
194
+ return "\n".join(lines)
195
+
196
+
197
+ def render_text_all(provider: str, totals: Dict[str, float]) -> str:
198
+ lines = [f"Provider: {provider}", "Models:"]
199
+ for model, cost in sorted(totals.items(), key=lambda item: item[1], reverse=True):
200
+ lines.append(f"- {model}: {usd(cost)}")
201
+ return "\n".join(lines)
202
+
203
+
204
+ def build_json_current(
205
+ provider: str,
206
+ model: str,
207
+ latest_date: Optional[str],
208
+ total_cost: Optional[float],
209
+ latest_cost: Optional[float],
210
+ latest_cost_date: Optional[str],
211
+ entry_count: int,
212
+ ) -> Dict[str, Any]:
213
+ return {
214
+ "provider": provider,
215
+ "mode": "current",
216
+ "model": model,
217
+ "latestModelDate": latest_date,
218
+ "totalCostUSD": total_cost,
219
+ "latestDayCostUSD": latest_cost,
220
+ "latestDayCostDate": latest_cost_date,
221
+ "dailyRowCount": entry_count,
222
+ }
223
+
224
+
225
+ def build_json_all(provider: str, totals: Dict[str, float]) -> Dict[str, Any]:
226
+ return {
227
+ "provider": provider,
228
+ "mode": "all",
229
+ "models": [
230
+ {"model": model, "totalCostUSD": cost}
231
+ for model, cost in sorted(totals.items(), key=lambda item: item[1], reverse=True)
232
+ ],
233
+ }
234
+
235
+
236
+ def main() -> int:
237
+ parser = argparse.ArgumentParser(description="Summarize CodexBar model usage from local cost logs.")
238
+ parser.add_argument("--provider", choices=["codex", "claude"], default="codex")
239
+ parser.add_argument("--mode", choices=["current", "all"], default="current")
240
+ parser.add_argument("--model", help="Explicit model name to report instead of auto-current.")
241
+ parser.add_argument("--input", help="Path to codexbar cost JSON (or '-' for stdin).")
242
+ parser.add_argument("--days", type=int, help="Limit to last N days (based on daily rows).")
243
+ parser.add_argument("--format", choices=["text", "json"], default="text")
244
+ parser.add_argument("--pretty", action="store_true", help="Pretty-print JSON output.")
245
+
246
+ args = parser.parse_args()
247
+
248
+ try:
249
+ payload = load_payload(args.input, args.provider)
250
+ except Exception as exc:
251
+ eprint(str(exc))
252
+ return 1
253
+
254
+ entries = parse_daily_entries(payload)
255
+ entries = filter_by_days(entries, args.days)
256
+
257
+ if args.mode == "current":
258
+ model = args.model
259
+ latest_date = None
260
+ if not model:
261
+ model, latest_date = pick_current_model(entries)
262
+ if not model:
263
+ eprint("No model data found in codexbar cost payload.")
264
+ return 2
265
+ totals = aggregate_costs(entries)
266
+ total_cost = totals.get(model)
267
+ latest_cost_date, latest_cost = latest_day_cost(entries, model)
268
+
269
+ if args.format == "json":
270
+ payload_out = build_json_current(
271
+ provider=args.provider,
272
+ model=model,
273
+ latest_date=latest_date,
274
+ total_cost=total_cost,
275
+ latest_cost=latest_cost,
276
+ latest_cost_date=latest_cost_date,
277
+ entry_count=len(entries),
278
+ )
279
+ indent = 2 if args.pretty else None
280
+ print(json.dumps(payload_out, indent=indent, sort_keys=args.pretty))
281
+ else:
282
+ print(
283
+ render_text_current(
284
+ provider=args.provider,
285
+ model=model,
286
+ latest_date=latest_date,
287
+ total_cost=total_cost,
288
+ latest_cost=latest_cost,
289
+ latest_cost_date=latest_cost_date,
290
+ entry_count=len(entries),
291
+ )
292
+ )
293
+ return 0
294
+
295
+ totals = aggregate_costs(entries)
296
+ if not totals:
297
+ eprint("No model breakdowns found in codexbar cost payload.")
298
+ return 2
299
+
300
+ if args.format == "json":
301
+ payload_out = build_json_all(provider=args.provider, totals=totals)
302
+ indent = 2 if args.pretty else None
303
+ print(json.dumps(payload_out, indent=indent, sort_keys=args.pretty))
304
+ else:
305
+ print(render_text_all(provider=args.provider, totals=totals))
306
+ return 0
307
+
308
+
309
+ if __name__ == "__main__":
310
+ raise SystemExit(main())
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: nano-banana-pro
3
+ description: Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).
4
+ homepage: https://ai.google.dev/
5
+ metadata: {"nexus":{"emoji":"🍌","requires":{"bins":["uv"],"env":["GEMINI_API_KEY"]},"primaryEnv":"GEMINI_API_KEY","install":[{"id":"uv-brew","kind":"brew","formula":"uv","bins":["uv"],"label":"Install uv (brew)"}]}}
6
+ ---
7
+
8
+ # Nano Banana Pro (Gemini 3 Pro Image)
9
+
10
+ Use the bundled script to generate or edit images.
11
+
12
+ Generate
13
+ ```bash
14
+ uv run {baseDir}/scripts/generate_image.py --prompt "your image description" --filename "output.png" --resolution 1K
15
+ ```
16
+
17
+ Edit
18
+ ```bash
19
+ uv run {baseDir}/scripts/generate_image.py --prompt "edit instructions" --filename "output.png" --input-image "/path/in.png" --resolution 2K
20
+ ```
21
+
22
+ API key
23
+ - `GEMINI_API_KEY` env var
24
+ - Or set `skills."nano-banana-pro".apiKey` / `skills."nano-banana-pro".env.GEMINI_API_KEY` in `~/nexus/state/nexus.json`
25
+
26
+ Notes
27
+ - Resolutions: `1K` (default), `2K`, `4K`.
28
+ - Use timestamps in filenames: `yyyy-mm-dd-hh-mm-ss-name.png`.
29
+ - The script prints a `MEDIA:` line for Nexus to auto-attach on supported chat providers.
30
+ - Do not read the image back; report the saved path only.
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.10"
4
+ # dependencies = [
5
+ # "google-genai>=1.0.0",
6
+ # "pillow>=10.0.0",
7
+ # ]
8
+ # ///
9
+ """
10
+ Generate images using Google's Nano Banana Pro (Gemini 3 Pro Image) API.
11
+
12
+ Usage:
13
+ uv run generate_image.py --prompt "your image description" --filename "output.png" [--resolution 1K|2K|4K] [--api-key KEY]
14
+ """
15
+
16
+ import argparse
17
+ import os
18
+ import sys
19
+ from pathlib import Path
20
+
21
+
22
+ def get_api_key(provided_key: str | None) -> str | None:
23
+ """Get API key from argument first, then environment."""
24
+ if provided_key:
25
+ return provided_key
26
+ return os.environ.get("GEMINI_API_KEY")
27
+
28
+
29
+ def main():
30
+ parser = argparse.ArgumentParser(
31
+ description="Generate images using Nano Banana Pro (Gemini 3 Pro Image)"
32
+ )
33
+ parser.add_argument(
34
+ "--prompt", "-p",
35
+ required=True,
36
+ help="Image description/prompt"
37
+ )
38
+ parser.add_argument(
39
+ "--filename", "-f",
40
+ required=True,
41
+ help="Output filename (e.g., sunset-mountains.png)"
42
+ )
43
+ parser.add_argument(
44
+ "--input-image", "-i",
45
+ help="Optional input image path for editing/modification"
46
+ )
47
+ parser.add_argument(
48
+ "--resolution", "-r",
49
+ choices=["1K", "2K", "4K"],
50
+ default="1K",
51
+ help="Output resolution: 1K (default), 2K, or 4K"
52
+ )
53
+ parser.add_argument(
54
+ "--api-key", "-k",
55
+ help="Gemini API key (overrides GEMINI_API_KEY env var)"
56
+ )
57
+
58
+ args = parser.parse_args()
59
+
60
+ # Get API key
61
+ api_key = get_api_key(args.api_key)
62
+ if not api_key:
63
+ print("Error: No API key provided.", file=sys.stderr)
64
+ print("Please either:", file=sys.stderr)
65
+ print(" 1. Provide --api-key argument", file=sys.stderr)
66
+ print(" 2. Set GEMINI_API_KEY environment variable", file=sys.stderr)
67
+ sys.exit(1)
68
+
69
+ # Import here after checking API key to avoid slow import on error
70
+ from google import genai
71
+ from google.genai import types
72
+ from PIL import Image as PILImage
73
+
74
+ # Initialise client
75
+ client = genai.Client(api_key=api_key)
76
+
77
+ # Set up output path
78
+ output_path = Path(args.filename)
79
+ output_path.parent.mkdir(parents=True, exist_ok=True)
80
+
81
+ # Load input image if provided
82
+ input_image = None
83
+ output_resolution = args.resolution
84
+ if args.input_image:
85
+ try:
86
+ input_image = PILImage.open(args.input_image)
87
+ print(f"Loaded input image: {args.input_image}")
88
+
89
+ # Auto-detect resolution if not explicitly set by user
90
+ if args.resolution == "1K": # Default value
91
+ # Map input image size to resolution
92
+ width, height = input_image.size
93
+ max_dim = max(width, height)
94
+ if max_dim >= 3000:
95
+ output_resolution = "4K"
96
+ elif max_dim >= 1500:
97
+ output_resolution = "2K"
98
+ else:
99
+ output_resolution = "1K"
100
+ print(f"Auto-detected resolution: {output_resolution} (from input {width}x{height})")
101
+ except Exception as e:
102
+ print(f"Error loading input image: {e}", file=sys.stderr)
103
+ sys.exit(1)
104
+
105
+ # Build contents (image first if editing, prompt only if generating)
106
+ if input_image:
107
+ contents = [input_image, args.prompt]
108
+ print(f"Editing image with resolution {output_resolution}...")
109
+ else:
110
+ contents = args.prompt
111
+ print(f"Generating image with resolution {output_resolution}...")
112
+
113
+ try:
114
+ response = client.models.generate_content(
115
+ model="gemini-3-pro-image-preview",
116
+ contents=contents,
117
+ config=types.GenerateContentConfig(
118
+ response_modalities=["TEXT", "IMAGE"],
119
+ image_config=types.ImageConfig(
120
+ image_size=output_resolution
121
+ )
122
+ )
123
+ )
124
+
125
+ # Process response and convert to PNG
126
+ image_saved = False
127
+ for part in response.parts:
128
+ if part.text is not None:
129
+ print(f"Model response: {part.text}")
130
+ elif part.inline_data is not None:
131
+ # Convert inline data to PIL Image and save as PNG
132
+ from io import BytesIO
133
+
134
+ # inline_data.data is already bytes, not base64
135
+ image_data = part.inline_data.data
136
+ if isinstance(image_data, str):
137
+ # If it's a string, it might be base64
138
+ import base64
139
+ image_data = base64.b64decode(image_data)
140
+
141
+ image = PILImage.open(BytesIO(image_data))
142
+
143
+ # Ensure RGB mode for PNG (convert RGBA to RGB with white background if needed)
144
+ if image.mode == 'RGBA':
145
+ rgb_image = PILImage.new('RGB', image.size, (255, 255, 255))
146
+ rgb_image.paste(image, mask=image.split()[3])
147
+ rgb_image.save(str(output_path), 'PNG')
148
+ elif image.mode == 'RGB':
149
+ image.save(str(output_path), 'PNG')
150
+ else:
151
+ image.convert('RGB').save(str(output_path), 'PNG')
152
+ image_saved = True
153
+
154
+ if image_saved:
155
+ full_path = output_path.resolve()
156
+ print(f"\nImage saved: {full_path}")
157
+ # Nexus parses MEDIA tokens and will attach the file on supported providers.
158
+ print(f"MEDIA: {full_path}")
159
+ else:
160
+ print("Error: No image was generated in the response.", file=sys.stderr)
161
+ sys.exit(1)
162
+
163
+ except Exception as e:
164
+ print(f"Error generating image: {e}", file=sys.stderr)
165
+ sys.exit(1)
166
+
167
+
168
+ if __name__ == "__main__":
169
+ main()
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: nano-pdf
3
+ description: Edit PDFs with natural-language instructions using the nano-pdf CLI.
4
+ homepage: https://pypi.org/project/nano-pdf/
5
+ metadata: {"nexus":{"emoji":"📄","requires":{"bins":["nano-pdf"]},"install":[{"id":"uv","kind":"uv","package":"nano-pdf","bins":["nano-pdf"],"label":"Install nano-pdf (uv)"}]}}
6
+ ---
7
+
8
+ # nano-pdf
9
+
10
+ Use `nano-pdf` to apply edits to a specific page in a PDF using a natural-language instruction.
11
+
12
+ ## Quick start
13
+
14
+ ```bash
15
+ nano-pdf edit deck.pdf 1 "Change the title to 'Q3 Results' and fix the typo in the subtitle"
16
+ ```
17
+
18
+ Notes:
19
+ - Page numbers are 0-based or 1-based depending on the tool’s version/config; if the result looks off by one, retry with the other.
20
+ - Always sanity-check the output PDF before sending it out.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: nexus-cloud
3
+ description: "Install and operate the Nexus Cloud CLI for encrypted workspace sync: build the Rust CLI, init/login, enable the background daemon, sync the personal workspace, mount shared workspaces, and explain how shared workspaces are created and shared."
4
+ ---
5
+
6
+ # Nexus Cloud CLI
7
+
8
+ Keep the security model straight: keys stay local, the server never sees plaintext.
9
+
10
+ ## Docs
11
+
12
+ - `docs/setup.md`
13
+ - `docs/security.md`
14
+ - `docs/troubleshooting.md`
15
+
16
+ ## Install and setup (personal workspace)
17
+
18
+ 1. Go to the repo: `~/nexus/home/projects/nexus-cloud`
19
+ 2. Build the CLI: `./scripts/build-rust-cli.sh`
20
+ 3. Point to the binary:
21
+ - `CLI=./rust/target/release/cli`
22
+ 4. Initialize the workspace:
23
+ - `$CLI init --workspace ~/nexus/home`
24
+ 5. Login (browser auth + local key provisioning):
25
+ - `$CLI login`
26
+ 6. Enable always-on sync:
27
+ - macOS: `$CLI daemon install`
28
+ - other OS: run `$CLI daemon` in a long-lived shell
29
+
30
+ ## Explain the lifecycle to humans
31
+
32
+ - "My Workspace" == personal workspace; always-on once the daemon is installed.
33
+ - "Shared Workspaces" == shared workspaces; each is mounted to a local folder.
34
+ - Use `$CLI guide` to show the lifecycle summary.
35
+
36
+ ## Shared workspaces (current CLI flow)
37
+
38
+ - List spaces: `$CLI collab spaces list`
39
+ - Mount: `$CLI spaces mount <space_id> --path <path>`
40
+ - Sync: `$CLI spaces push <space_id>` / `$CLI spaces pull <space_id>`
41
+
42
+ ## Create a shared workspace (current model)
43
+
44
+ - Ensure members are accepted connections (managed on the website today).
45
+ - Create: `$CLI collab spaces create --name "Project" --members "alice@example.com,bob@example.com"`
46
+ - Mount after creation: `$CLI spaces mount <space_id>`
47
+
48
+ ## Share link invites (allowlist model)
49
+
50
+ - Create a link restricted to specific emails:
51
+ - `$CLI collab spaces invite-links create <space_id> --emails "alice@example.com,bob@example.com"`
52
+ - Share the URL printed by the CLI.
53
+ - Invitees accept in the browser and then run `$CLI login` to fetch space keys.
@@ -0,0 +1,24 @@
1
+ # Nexus Cloud Security
2
+
3
+ ## Zero-knowledge model
4
+
5
+ All encryption happens locally. The server only stores encrypted blobs.
6
+
7
+ ## Master password
8
+
9
+ - Required to decrypt data.
10
+ - Store in 1Password immediately.
11
+ - If lost, data is unrecoverable.
12
+
13
+ ## .nexusignore
14
+
15
+ Exclude sensitive paths:
16
+
17
+ ```
18
+ sessions/
19
+ .env
20
+ *credentials*
21
+ *secret*
22
+ *.key
23
+ *.pem
24
+ ```
@@ -0,0 +1,51 @@
1
+ # Nexus Cloud Setup
2
+
3
+ This is the encrypted workspace sync CLI.
4
+
5
+ ## Install wrangler
6
+
7
+ ```bash
8
+ npm install -g wrangler
9
+ wrangler --version
10
+ ```
11
+
12
+ ## Authenticate with Cloudflare
13
+
14
+ ```bash
15
+ wrangler login
16
+ wrangler whoami
17
+ ```
18
+
19
+ ## Create R2 bucket
20
+
21
+ ```bash
22
+ wrangler r2 bucket create nexus-blobs
23
+ ```
24
+
25
+ ## Deploy the worker
26
+
27
+ ```bash
28
+ cd ~/nexus/home/projects/nexus-cloud
29
+ wrangler deploy
30
+ ```
31
+
32
+ ## Initialize locally
33
+
34
+ ```bash
35
+ nexus-cloud init
36
+ ```
37
+
38
+ Provide:
39
+ - Worker URL
40
+ - Master password (store in 1Password)
41
+
42
+ ## First sync
43
+
44
+ ```bash
45
+ nexus-cloud push -m "Initial sync"
46
+ nexus-cloud status
47
+ ```
48
+
49
+ ## Notes
50
+
51
+ - Create a `.nexusignore` to exclude sensitive files.
@@ -0,0 +1,28 @@
1
+ # Nexus Cloud Troubleshooting
2
+
3
+ ## Not authenticated with Cloudflare
4
+
5
+ ```bash
6
+ wrangler login
7
+ wrangler whoami
8
+ ```
9
+
10
+ ## R2 bucket not found
11
+
12
+ ```bash
13
+ wrangler r2 bucket create nexus-blobs
14
+ ```
15
+
16
+ ## Master password lost
17
+
18
+ Data cannot be recovered without the original master password.
19
+ Initialize again and create a new workspace.
20
+
21
+ ## Worker timeout on large sync
22
+
23
+ Split pushes:
24
+
25
+ ```bash
26
+ nexus-cloud push --path skills/ -m "Sync skills"
27
+ nexus-cloud push --path projects/ -m "Sync projects"
28
+ ```