@intent-systems/nexus 2026.1.5-11

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 (838) 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-id.js +41 -0
  6. package/dist/agents/agent-paths.js +16 -0
  7. package/dist/agents/agent-scope.js +44 -0
  8. package/dist/agents/auth-profiles.js +715 -0
  9. package/dist/agents/bash-process-registry.js +126 -0
  10. package/dist/agents/bash-tools.js +838 -0
  11. package/dist/agents/chutes-oauth.js +47 -0
  12. package/dist/agents/clawdbot-tools.js +62 -0
  13. package/dist/agents/context.js +34 -0
  14. package/dist/agents/defaults.js +6 -0
  15. package/dist/agents/identity-state.js +101 -0
  16. package/dist/agents/memory-search.js +80 -0
  17. package/dist/agents/model-auth.js +116 -0
  18. package/dist/agents/model-catalog.js +55 -0
  19. package/dist/agents/model-fallback.js +216 -0
  20. package/dist/agents/model-scan.js +263 -0
  21. package/dist/agents/model-selection.js +152 -0
  22. package/dist/agents/models-config.js +177 -0
  23. package/dist/agents/nexus-tools.js +46 -0
  24. package/dist/agents/pi-embedded-block-chunker.js +188 -0
  25. package/dist/agents/pi-embedded-helpers.js +139 -0
  26. package/dist/agents/pi-embedded-runner.js +1024 -0
  27. package/dist/agents/pi-embedded-subscribe.js +541 -0
  28. package/dist/agents/pi-embedded-utils.js +20 -0
  29. package/dist/agents/pi-embedded.js +1 -0
  30. package/dist/agents/pi-extensions/compaction-safeguard.js +140 -0
  31. package/dist/agents/pi-tool-definition-adapter.js +17 -0
  32. package/dist/agents/pi-tools.js +510 -0
  33. package/dist/agents/pi-tools.schema.js +358 -0
  34. package/dist/agents/sandbox-paths.js +68 -0
  35. package/dist/agents/sandbox.js +676 -0
  36. package/dist/agents/shell-utils.js +53 -0
  37. package/dist/agents/skill-runner.js +256 -0
  38. package/dist/agents/skill-state.js +164 -0
  39. package/dist/agents/skill-tools.js +191 -0
  40. package/dist/agents/skill-usage.js +143 -0
  41. package/dist/agents/skills-install.js +244 -0
  42. package/dist/agents/skills-status.js +154 -0
  43. package/dist/agents/skills.js +476 -0
  44. package/dist/agents/subagent-registry.js +335 -0
  45. package/dist/agents/subagent-registry.store.js +47 -0
  46. package/dist/agents/system-prompt.js +195 -0
  47. package/dist/agents/timeout.js +26 -0
  48. package/dist/agents/tool-display.js +155 -0
  49. package/dist/agents/tool-display.json +236 -0
  50. package/dist/agents/tool-images.js +138 -0
  51. package/dist/agents/tool-policy.js +103 -0
  52. package/dist/agents/tools/agent-step.js +41 -0
  53. package/dist/agents/tools/browser-tool.js +298 -0
  54. package/dist/agents/tools/canvas-tool.js +193 -0
  55. package/dist/agents/tools/common.js +88 -0
  56. package/dist/agents/tools/cron-tool.js +141 -0
  57. package/dist/agents/tools/discord-actions-guild.js +186 -0
  58. package/dist/agents/tools/discord-actions-messaging.js +313 -0
  59. package/dist/agents/tools/discord-actions-moderation.js +70 -0
  60. package/dist/agents/tools/discord-actions.js +56 -0
  61. package/dist/agents/tools/discord-schema.js +199 -0
  62. package/dist/agents/tools/discord-tool.js +16 -0
  63. package/dist/agents/tools/gateway-tool.js +46 -0
  64. package/dist/agents/tools/gateway.js +28 -0
  65. package/dist/agents/tools/image-tool.js +225 -0
  66. package/dist/agents/tools/memory-tool.js +92 -0
  67. package/dist/agents/tools/nodes-tool.js +413 -0
  68. package/dist/agents/tools/nodes-utils.js +92 -0
  69. package/dist/agents/tools/sessions-announce-target.js +39 -0
  70. package/dist/agents/tools/sessions-helpers.js +88 -0
  71. package/dist/agents/tools/sessions-history-tool.js +137 -0
  72. package/dist/agents/tools/sessions-list-tool.js +196 -0
  73. package/dist/agents/tools/sessions-send-helpers.js +103 -0
  74. package/dist/agents/tools/sessions-send-tool.js +371 -0
  75. package/dist/agents/tools/sessions-spawn-tool.js +319 -0
  76. package/dist/agents/tools/slack-actions.js +129 -0
  77. package/dist/agents/tools/slack-schema.js +59 -0
  78. package/dist/agents/tools/slack-tool.js +16 -0
  79. package/dist/agents/tools/telegram-actions.js +159 -0
  80. package/dist/agents/tools/telegram-schema.js +28 -0
  81. package/dist/agents/tools/telegram-tool.js +16 -0
  82. package/dist/agents/tools/whatsapp-login-tool.js +63 -0
  83. package/dist/agents/usage.js +58 -0
  84. package/dist/agents/workspace.js +286 -0
  85. package/dist/auto-reply/chunk.js +177 -0
  86. package/dist/auto-reply/command-auth.js +44 -0
  87. package/dist/auto-reply/command-detection.js +23 -0
  88. package/dist/auto-reply/envelope.js +30 -0
  89. package/dist/auto-reply/group-activation.js +20 -0
  90. package/dist/auto-reply/heartbeat.js +58 -0
  91. package/dist/auto-reply/model.js +22 -0
  92. package/dist/auto-reply/reply/abort.js +14 -0
  93. package/dist/auto-reply/reply/agent-runner.js +426 -0
  94. package/dist/auto-reply/reply/bash-command.js +314 -0
  95. package/dist/auto-reply/reply/block-streaming.js +34 -0
  96. package/dist/auto-reply/reply/body.js +29 -0
  97. package/dist/auto-reply/reply/commands.js +332 -0
  98. package/dist/auto-reply/reply/directive-handling.js +751 -0
  99. package/dist/auto-reply/reply/directives.js +74 -0
  100. package/dist/auto-reply/reply/dispatch-from-config.js +23 -0
  101. package/dist/auto-reply/reply/followup-runner.js +181 -0
  102. package/dist/auto-reply/reply/groups.js +152 -0
  103. package/dist/auto-reply/reply/mentions.js +64 -0
  104. package/dist/auto-reply/reply/model-selection.js +214 -0
  105. package/dist/auto-reply/reply/queue.js +399 -0
  106. package/dist/auto-reply/reply/reply-dispatcher.js +68 -0
  107. package/dist/auto-reply/reply/reply-tags.js +26 -0
  108. package/dist/auto-reply/reply/session-updates.js +103 -0
  109. package/dist/auto-reply/reply/session.js +169 -0
  110. package/dist/auto-reply/reply/typing.js +125 -0
  111. package/dist/auto-reply/reply.js +655 -0
  112. package/dist/auto-reply/send-policy.js +28 -0
  113. package/dist/auto-reply/status.js +197 -0
  114. package/dist/auto-reply/templating.js +9 -0
  115. package/dist/auto-reply/thinking.js +64 -0
  116. package/dist/auto-reply/tokens.js +2 -0
  117. package/dist/auto-reply/tool-meta.js +74 -0
  118. package/dist/auto-reply/transcription.js +57 -0
  119. package/dist/auto-reply/types.js +1 -0
  120. package/dist/browser/bridge-server.js +37 -0
  121. package/dist/browser/cdp.js +382 -0
  122. package/dist/browser/chrome.js +432 -0
  123. package/dist/browser/client-actions-core.js +67 -0
  124. package/dist/browser/client-actions-observe.js +24 -0
  125. package/dist/browser/client-actions-types.js +1 -0
  126. package/dist/browser/client-actions.js +3 -0
  127. package/dist/browser/client-fetch.js +43 -0
  128. package/dist/browser/client.js +107 -0
  129. package/dist/browser/config.js +159 -0
  130. package/dist/browser/constants.js +5 -0
  131. package/dist/browser/profiles-service.js +124 -0
  132. package/dist/browser/profiles.js +96 -0
  133. package/dist/browser/pw-ai.js +2 -0
  134. package/dist/browser/pw-session.js +144 -0
  135. package/dist/browser/pw-tools-core.js +366 -0
  136. package/dist/browser/routes/agent.js +549 -0
  137. package/dist/browser/routes/basic.js +155 -0
  138. package/dist/browser/routes/index.js +8 -0
  139. package/dist/browser/routes/tabs.js +105 -0
  140. package/dist/browser/routes/utils.js +62 -0
  141. package/dist/browser/screenshot.js +40 -0
  142. package/dist/browser/server-context.js +377 -0
  143. package/dist/browser/server.js +81 -0
  144. package/dist/browser/target-id.js +18 -0
  145. package/dist/browser/trash.js +21 -0
  146. package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
  147. package/dist/canvas-host/a2ui/index.html +246 -0
  148. package/dist/canvas-host/a2ui.js +187 -0
  149. package/dist/canvas-host/server.js +382 -0
  150. package/dist/capabilities/detector.js +245 -0
  151. package/dist/capabilities/registry.js +99 -0
  152. package/dist/channel-web.js +8 -0
  153. package/dist/channels/location.js +44 -0
  154. package/dist/channels/web/index.js +2 -0
  155. package/dist/cli/browser-cli-actions-input.js +459 -0
  156. package/dist/cli/browser-cli-actions-observe.js +56 -0
  157. package/dist/cli/browser-cli-examples.js +31 -0
  158. package/dist/cli/browser-cli-inspect.js +97 -0
  159. package/dist/cli/browser-cli-manage.js +286 -0
  160. package/dist/cli/browser-cli-shared.js +1 -0
  161. package/dist/cli/browser-cli.js +26 -0
  162. package/dist/cli/canvas-cli.js +416 -0
  163. package/dist/cli/cloud-cli.js +399 -0
  164. package/dist/cli/credential-cli.js +418 -0
  165. package/dist/cli/cron-cli.js +454 -0
  166. package/dist/cli/deps.js +17 -0
  167. package/dist/cli/dns-cli.js +180 -0
  168. package/dist/cli/gateway-cli.js +665 -0
  169. package/dist/cli/gateway-rpc.js +20 -0
  170. package/dist/cli/hooks-cli.js +135 -0
  171. package/dist/cli/log-cli.js +25 -0
  172. package/dist/cli/memory-cli.js +101 -0
  173. package/dist/cli/models-cli.js +248 -0
  174. package/dist/cli/nodes-camera.js +57 -0
  175. package/dist/cli/nodes-canvas.js +26 -0
  176. package/dist/cli/nodes-cli.js +946 -0
  177. package/dist/cli/nodes-screen.js +37 -0
  178. package/dist/cli/pairing-cli.js +100 -0
  179. package/dist/cli/parse-duration.js +20 -0
  180. package/dist/cli/plugins-cli.js +158 -0
  181. package/dist/cli/ports.js +97 -0
  182. package/dist/cli/profile.js +81 -0
  183. package/dist/cli/program.js +236 -0
  184. package/dist/cli/prompt.js +19 -0
  185. package/dist/cli/run-main.js +48 -0
  186. package/dist/cli/skills-cli.js +290 -0
  187. package/dist/cli/skills-hub-cli.js +1465 -0
  188. package/dist/cli/telegram-cli.js +56 -0
  189. package/dist/cli/tool-connector-cli.js +193 -0
  190. package/dist/cli/tui-cli.js +35 -0
  191. package/dist/cli/upstream-sync-cli.js +2990 -0
  192. package/dist/cli/usage-cli.js +38 -0
  193. package/dist/cli/wait.js +8 -0
  194. package/dist/commands/agent-via-gateway.js +115 -0
  195. package/dist/commands/agent.js +665 -0
  196. package/dist/commands/antigravity-oauth.js +327 -0
  197. package/dist/commands/auth-choice-options.js +85 -0
  198. package/dist/commands/auth-choice.js +286 -0
  199. package/dist/commands/auth-token.js +31 -0
  200. package/dist/commands/bootstrap-preset.js +228 -0
  201. package/dist/commands/capabilities.js +63 -0
  202. package/dist/commands/chutes-oauth.js +144 -0
  203. package/dist/commands/claude-md.js +138 -0
  204. package/dist/commands/config-view.js +11 -0
  205. package/dist/commands/config.js +85 -0
  206. package/dist/commands/configure.js +648 -0
  207. package/dist/commands/credential.js +697 -0
  208. package/dist/commands/cursor-hooks.js +240 -0
  209. package/dist/commands/cursor-rules.js +56 -0
  210. package/dist/commands/doctor-state-migrations.js +358 -0
  211. package/dist/commands/doctor-ui.js +113 -0
  212. package/dist/commands/doctor.js +674 -0
  213. package/dist/commands/health.js +112 -0
  214. package/dist/commands/identity.js +51 -0
  215. package/dist/commands/init.js +450 -0
  216. package/dist/commands/log.js +134 -0
  217. package/dist/commands/models/aliases.js +85 -0
  218. package/dist/commands/models/fallbacks.js +123 -0
  219. package/dist/commands/models/image-fallbacks.js +123 -0
  220. package/dist/commands/models/list.js +347 -0
  221. package/dist/commands/models/scan.js +271 -0
  222. package/dist/commands/models/set-image.js +27 -0
  223. package/dist/commands/models/set.js +27 -0
  224. package/dist/commands/models/shared.js +73 -0
  225. package/dist/commands/models.js +7 -0
  226. package/dist/commands/onboard-auth.js +126 -0
  227. package/dist/commands/onboard-channels.js +814 -0
  228. package/dist/commands/onboard-eve-identity.js +97 -0
  229. package/dist/commands/onboard-github.js +153 -0
  230. package/dist/commands/onboard-helpers.js +303 -0
  231. package/dist/commands/onboard-interactive.js +17 -0
  232. package/dist/commands/onboard-non-interactive.js +230 -0
  233. package/dist/commands/onboard-providers.js +829 -0
  234. package/dist/commands/onboard-quickstart.js +192 -0
  235. package/dist/commands/onboard-remote.js +120 -0
  236. package/dist/commands/onboard-skills.js +148 -0
  237. package/dist/commands/onboard-types.js +1 -0
  238. package/dist/commands/onboard.js +19 -0
  239. package/dist/commands/openai-codex-model-default.js +38 -0
  240. package/dist/commands/poll.js +64 -0
  241. package/dist/commands/quest-state.js +271 -0
  242. package/dist/commands/quest.js +67 -0
  243. package/dist/commands/reset.js +61 -0
  244. package/dist/commands/send.js +124 -0
  245. package/dist/commands/sessions-ingest.js +360 -0
  246. package/dist/commands/sessions.js +212 -0
  247. package/dist/commands/setup.js +61 -0
  248. package/dist/commands/signal-install.js +135 -0
  249. package/dist/commands/skills-manifest.js +514 -0
  250. package/dist/commands/status.js +259 -0
  251. package/dist/commands/suggestions.js +54 -0
  252. package/dist/commands/systemd-linger.js +71 -0
  253. package/dist/commands/update.js +16 -0
  254. package/dist/commands/usage-tracking.js +32 -0
  255. package/dist/commands/usage-upload.js +32 -0
  256. package/dist/config/config.js +6 -0
  257. package/dist/config/defaults.js +138 -0
  258. package/dist/config/group-policy.js +49 -0
  259. package/dist/config/includes.js +181 -0
  260. package/dist/config/io.js +260 -0
  261. package/dist/config/legacy-migrate.js +13 -0
  262. package/dist/config/legacy.js +427 -0
  263. package/dist/config/paths.js +98 -0
  264. package/dist/config/port-defaults.js +32 -0
  265. package/dist/config/schema.js +173 -0
  266. package/dist/config/sessions.js +615 -0
  267. package/dist/config/talk.js +31 -0
  268. package/dist/config/types.js +1 -0
  269. package/dist/config/validation.js +29 -0
  270. package/dist/config/zod-schema.js +1111 -0
  271. package/dist/control-plane/broker/broker.js +1022 -0
  272. package/dist/control-plane/compaction.js +282 -0
  273. package/dist/control-plane/factory.js +31 -0
  274. package/dist/control-plane/index.js +10 -0
  275. package/dist/control-plane/odu/agents.js +192 -0
  276. package/dist/control-plane/odu/interaction-tools.js +208 -0
  277. package/dist/control-plane/odu/prompt-loader.js +95 -0
  278. package/dist/control-plane/odu/runtime.js +479 -0
  279. package/dist/control-plane/odu/types.js +6 -0
  280. package/dist/control-plane/odu-control-plane.js +316 -0
  281. package/dist/control-plane/single-agent.js +249 -0
  282. package/dist/control-plane/types.js +11 -0
  283. package/dist/control-ui/assets/index-D8Q5AI4D.js +2393 -0
  284. package/dist/control-ui/assets/index-D8Q5AI4D.js.map +1 -0
  285. package/dist/control-ui/assets/index-g06q5Xc3.css +1 -0
  286. package/dist/control-ui/favicon.ico +0 -0
  287. package/dist/control-ui/index.html +16 -0
  288. package/dist/credentials/store.js +449 -0
  289. package/dist/cron/isolated-agent.js +529 -0
  290. package/dist/cron/normalize.js +73 -0
  291. package/dist/cron/parse.js +24 -0
  292. package/dist/cron/run-log.js +72 -0
  293. package/dist/cron/schedule.js +24 -0
  294. package/dist/cron/service.js +471 -0
  295. package/dist/cron/store.js +43 -0
  296. package/dist/cron/types.js +1 -0
  297. package/dist/daemon/constants.js +10 -0
  298. package/dist/daemon/launchd.js +309 -0
  299. package/dist/daemon/legacy.js +63 -0
  300. package/dist/daemon/program-args.js +141 -0
  301. package/dist/daemon/schtasks.js +269 -0
  302. package/dist/daemon/service.js +69 -0
  303. package/dist/daemon/systemd.js +332 -0
  304. package/dist/discord/index.js +2 -0
  305. package/dist/discord/monitor.js +1089 -0
  306. package/dist/discord/probe.js +54 -0
  307. package/dist/discord/send.js +652 -0
  308. package/dist/discord/token.js +8 -0
  309. package/dist/entry.js +16 -0
  310. package/dist/gateway/auth.js +121 -0
  311. package/dist/gateway/call.js +103 -0
  312. package/dist/gateway/chat-attachments.js +41 -0
  313. package/dist/gateway/client.js +180 -0
  314. package/dist/gateway/config-reload.js +279 -0
  315. package/dist/gateway/control-ui.js +184 -0
  316. package/dist/gateway/hooks-mapping.js +282 -0
  317. package/dist/gateway/hooks.js +168 -0
  318. package/dist/gateway/net.js +29 -0
  319. package/dist/gateway/protocol/index.js +62 -0
  320. package/dist/gateway/protocol/schema.js +577 -0
  321. package/dist/gateway/server-bridge-subscriptions.js +93 -0
  322. package/dist/gateway/server-bridge.js +1066 -0
  323. package/dist/gateway/server-browser.js +12 -0
  324. package/dist/gateway/server-channels.js +680 -0
  325. package/dist/gateway/server-chat.js +159 -0
  326. package/dist/gateway/server-constants.js +8 -0
  327. package/dist/gateway/server-discovery.js +62 -0
  328. package/dist/gateway/server-http.js +165 -0
  329. package/dist/gateway/server-methods/agent-job.js +114 -0
  330. package/dist/gateway/server-methods/agent.js +254 -0
  331. package/dist/gateway/server-methods/channels.js +239 -0
  332. package/dist/gateway/server-methods/chat.js +207 -0
  333. package/dist/gateway/server-methods/config.js +50 -0
  334. package/dist/gateway/server-methods/connect.js +6 -0
  335. package/dist/gateway/server-methods/cron.js +99 -0
  336. package/dist/gateway/server-methods/health.js +28 -0
  337. package/dist/gateway/server-methods/models.js +16 -0
  338. package/dist/gateway/server-methods/nodes.js +294 -0
  339. package/dist/gateway/server-methods/providers.js +257 -0
  340. package/dist/gateway/server-methods/send.js +254 -0
  341. package/dist/gateway/server-methods/sessions.js +382 -0
  342. package/dist/gateway/server-methods/skills.js +83 -0
  343. package/dist/gateway/server-methods/system.js +118 -0
  344. package/dist/gateway/server-methods/talk.js +22 -0
  345. package/dist/gateway/server-methods/types.js +1 -0
  346. package/dist/gateway/server-methods/voicewake.js +30 -0
  347. package/dist/gateway/server-methods/web.js +81 -0
  348. package/dist/gateway/server-methods/wizard.js +100 -0
  349. package/dist/gateway/server-methods.js +53 -0
  350. package/dist/gateway/server-providers.js +687 -0
  351. package/dist/gateway/server-shared.js +1 -0
  352. package/dist/gateway/server-utils.js +35 -0
  353. package/dist/gateway/server.js +1492 -0
  354. package/dist/gateway/session-utils.js +355 -0
  355. package/dist/gateway/ws-log.js +343 -0
  356. package/dist/gateway/ws-logging.js +8 -0
  357. package/dist/globals.js +41 -0
  358. package/dist/hooks/gmail-ops.js +236 -0
  359. package/dist/hooks/gmail-setup-utils.js +278 -0
  360. package/dist/hooks/gmail-watcher.js +190 -0
  361. package/dist/hooks/gmail.js +177 -0
  362. package/dist/imessage/client.js +165 -0
  363. package/dist/imessage/index.js +3 -0
  364. package/dist/imessage/monitor.js +365 -0
  365. package/dist/imessage/probe.js +26 -0
  366. package/dist/imessage/send.js +83 -0
  367. package/dist/imessage/targets.js +176 -0
  368. package/dist/index.js +55 -0
  369. package/dist/infra/agent-events.js +46 -0
  370. package/dist/infra/binaries.js +9 -0
  371. package/dist/infra/bonjour-discovery.js +163 -0
  372. package/dist/infra/bonjour.js +200 -0
  373. package/dist/infra/bridge/server.js +564 -0
  374. package/dist/infra/canvas-host-url.js +54 -0
  375. package/dist/infra/channel-summary.js +78 -0
  376. package/dist/infra/control-ui-assets.js +112 -0
  377. package/dist/infra/dotenv.js +15 -0
  378. package/dist/infra/env.js +8 -0
  379. package/dist/infra/errors.js +28 -0
  380. package/dist/infra/event-log.js +257 -0
  381. package/dist/infra/gateway-lock.js +8 -0
  382. package/dist/infra/git-commit.js +91 -0
  383. package/dist/infra/heartbeat-events.js +21 -0
  384. package/dist/infra/heartbeat-runner.js +458 -0
  385. package/dist/infra/heartbeat-wake.js +61 -0
  386. package/dist/infra/is-main.js +37 -0
  387. package/dist/infra/json-file.js +21 -0
  388. package/dist/infra/machine-name.js +40 -0
  389. package/dist/infra/nexus-root.js +56 -0
  390. package/dist/infra/node-pairing.js +212 -0
  391. package/dist/infra/path-env.js +92 -0
  392. package/dist/infra/ports.js +87 -0
  393. package/dist/infra/provider-summary.js +80 -0
  394. package/dist/infra/provider-usage.auth.js +191 -0
  395. package/dist/infra/provider-usage.fetch.claude.js +139 -0
  396. package/dist/infra/provider-usage.fetch.codex.js +62 -0
  397. package/dist/infra/provider-usage.fetch.copilot.js +42 -0
  398. package/dist/infra/provider-usage.fetch.gemini.js +57 -0
  399. package/dist/infra/provider-usage.fetch.js +6 -0
  400. package/dist/infra/provider-usage.fetch.minimax.js +219 -0
  401. package/dist/infra/provider-usage.fetch.shared.js +11 -0
  402. package/dist/infra/provider-usage.fetch.zai.js +62 -0
  403. package/dist/infra/provider-usage.format.js +77 -0
  404. package/dist/infra/provider-usage.js +149 -0
  405. package/dist/infra/provider-usage.load.js +54 -0
  406. package/dist/infra/provider-usage.shared.js +19 -0
  407. package/dist/infra/provider-usage.types.js +1 -0
  408. package/dist/infra/restart.js +29 -0
  409. package/dist/infra/retry.js +16 -0
  410. package/dist/infra/runtime-guard.js +59 -0
  411. package/dist/infra/shell-env.js +88 -0
  412. package/dist/infra/system-events.js +71 -0
  413. package/dist/infra/system-presence.js +217 -0
  414. package/dist/infra/tailnet.js +46 -0
  415. package/dist/infra/tailscale.js +149 -0
  416. package/dist/infra/unhandled-rejections.js +19 -0
  417. package/dist/infra/usage-settings.js +78 -0
  418. package/dist/infra/usage-suggestions.js +253 -0
  419. package/dist/infra/usage-upload.js +327 -0
  420. package/dist/infra/voicewake.js +78 -0
  421. package/dist/infra/widearea-dns.js +123 -0
  422. package/dist/infra/ws.js +13 -0
  423. package/dist/logger.js +52 -0
  424. package/dist/logging/redact.js +109 -0
  425. package/dist/logging.js +506 -0
  426. package/dist/macos/gateway-daemon.js +145 -0
  427. package/dist/macos/relay.js +49 -0
  428. package/dist/markdown/fences.js +58 -0
  429. package/dist/media/constants.js +33 -0
  430. package/dist/media/host.js +42 -0
  431. package/dist/media/image-ops.js +121 -0
  432. package/dist/media/mime.js +123 -0
  433. package/dist/media/parse.js +83 -0
  434. package/dist/media/server.js +64 -0
  435. package/dist/media/store.js +139 -0
  436. package/dist/memory/embeddings.js +146 -0
  437. package/dist/memory/index.js +3 -0
  438. package/dist/memory/internal.js +163 -0
  439. package/dist/native/nexus-cloud/darwin-arm64/nexus-cloud +0 -0
  440. package/dist/native/nexus-cloud/darwin-arm64/nexus-cloud-rs +0 -0
  441. package/dist/native/nexus-cloud/darwin-x64/nexus-cloud-rs +0 -0
  442. package/dist/native/nexus-cloud/linux-arm64/nexus-cloud-rs +0 -0
  443. package/dist/native/nexus-cloud/linux-x64/nexus-cloud-rs +0 -0
  444. package/dist/native/nexus-cloud/win32-x64/nexus-cloud-rs.exe +0 -0
  445. package/dist/pairing/pairing-store.js +218 -0
  446. package/dist/plugins/cli.js +42 -0
  447. package/dist/plugins/discovery.js +253 -0
  448. package/dist/plugins/install.js +181 -0
  449. package/dist/plugins/loader.js +290 -0
  450. package/dist/plugins/registry.js +105 -0
  451. package/dist/plugins/status.js +29 -0
  452. package/dist/plugins/tools.js +39 -0
  453. package/dist/plugins/types.js +1 -0
  454. package/dist/polls.js +43 -0
  455. package/dist/process/command-queue.js +97 -0
  456. package/dist/process/exec.js +75 -0
  457. package/dist/provider-web.js +8 -0
  458. package/dist/providers/github-copilot-auth.js +123 -0
  459. package/dist/providers/github-copilot-models.js +35 -0
  460. package/dist/providers/github-copilot-token.js +11 -0
  461. package/dist/providers/location.js +48 -0
  462. package/dist/providers/web/index.js +2 -0
  463. package/dist/routing/resolve-route.js +144 -0
  464. package/dist/routing/session-key.js +65 -0
  465. package/dist/runtime.js +8 -0
  466. package/dist/sessions/level-overrides.js +9 -0
  467. package/dist/sessions/send-policy.js +68 -0
  468. package/dist/signal/client.js +134 -0
  469. package/dist/signal/daemon.js +69 -0
  470. package/dist/signal/index.js +3 -0
  471. package/dist/signal/monitor.js +411 -0
  472. package/dist/signal/probe.js +46 -0
  473. package/dist/signal/send.js +91 -0
  474. package/dist/skills/scan-runner.js +204 -0
  475. package/dist/slack/actions.js +97 -0
  476. package/dist/slack/index.js +5 -0
  477. package/dist/slack/monitor.js +1291 -0
  478. package/dist/slack/probe.js +47 -0
  479. package/dist/slack/send.js +131 -0
  480. package/dist/slack/token.js +10 -0
  481. package/dist/telegram/allowed-updates.js +8 -0
  482. package/dist/telegram/bot.js +724 -0
  483. package/dist/telegram/download.js +34 -0
  484. package/dist/telegram/index.js +4 -0
  485. package/dist/telegram/monitor.js +47 -0
  486. package/dist/telegram/pairing-store.js +77 -0
  487. package/dist/telegram/probe.js +63 -0
  488. package/dist/telegram/proxy.js +9 -0
  489. package/dist/telegram/reaction-level.js +46 -0
  490. package/dist/telegram/send.js +151 -0
  491. package/dist/telegram/sent-message-cache.js +65 -0
  492. package/dist/telegram/token.js +30 -0
  493. package/dist/telegram/update-offset-store.js +61 -0
  494. package/dist/telegram/webhook-set.js +12 -0
  495. package/dist/telegram/webhook.js +56 -0
  496. package/dist/tui/commands.js +87 -0
  497. package/dist/tui/components/assistant-message.js +16 -0
  498. package/dist/tui/components/chat-log.js +92 -0
  499. package/dist/tui/components/custom-editor.js +55 -0
  500. package/dist/tui/components/selectors.js +8 -0
  501. package/dist/tui/components/tool-execution.js +111 -0
  502. package/dist/tui/components/user-message.js +17 -0
  503. package/dist/tui/gateway-chat.js +140 -0
  504. package/dist/tui/theme/theme.js +80 -0
  505. package/dist/tui/tui.js +708 -0
  506. package/dist/utils/provider-utils.js +28 -0
  507. package/dist/utils.js +158 -0
  508. package/dist/version.js +18 -0
  509. package/dist/web/accounts.js +86 -0
  510. package/dist/web/active-listener.js +25 -0
  511. package/dist/web/auto-reply.js +1256 -0
  512. package/dist/web/inbound.js +649 -0
  513. package/dist/web/login-qr.js +230 -0
  514. package/dist/web/login.js +71 -0
  515. package/dist/web/media.js +175 -0
  516. package/dist/web/outbound.js +102 -0
  517. package/dist/web/qr-image.js +97 -0
  518. package/dist/web/reconnect.js +60 -0
  519. package/dist/web/session.js +370 -0
  520. package/dist/wizard/clack-prompter.js +56 -0
  521. package/dist/wizard/onboarding.js +642 -0
  522. package/dist/wizard/prompts.js +6 -0
  523. package/dist/wizard/session.js +203 -0
  524. package/docs/AGENTS.default.md +116 -0
  525. package/docs/CAPABILITIES.md +444 -0
  526. package/docs/CNAME +1 -0
  527. package/docs/NEXUS_CORE_REWRITE_SPEC.md +226 -0
  528. package/docs/RELEASING.md +69 -0
  529. package/docs/_config.yml +53 -0
  530. package/docs/_layouts/default.html +145 -0
  531. package/docs/agent-assisted-install.md +95 -0
  532. package/docs/agent-loop.md +61 -0
  533. package/docs/agent-send.md +21 -0
  534. package/docs/agent.md +108 -0
  535. package/docs/android.md +133 -0
  536. package/docs/architecture.md +114 -0
  537. package/docs/assets/markdown.css +133 -0
  538. package/docs/assets/pixel-lobster.svg +60 -0
  539. package/docs/assets/terminal.css +470 -0
  540. package/docs/assets/theme.js +55 -0
  541. package/docs/audio.md +48 -0
  542. package/docs/automation/nexus-sync.md +371 -0
  543. package/docs/background-process.md +74 -0
  544. package/docs/bash.md +32 -0
  545. package/docs/bedrock.md +71 -0
  546. package/docs/bonjour.md +159 -0
  547. package/docs/browser-linux-troubleshooting.md +114 -0
  548. package/docs/browser.md +293 -0
  549. package/docs/bun.md +56 -0
  550. package/docs/camera.md +152 -0
  551. package/docs/clawd.md +212 -0
  552. package/docs/concepts/usage-tracking.md +29 -0
  553. package/docs/configuration.md +1666 -0
  554. package/docs/control-ui.md +83 -0
  555. package/docs/cron.md +385 -0
  556. package/docs/dashboard.md +17 -0
  557. package/docs/device-models.md +46 -0
  558. package/docs/discord.md +308 -0
  559. package/docs/discovery.md +112 -0
  560. package/docs/docker.md +258 -0
  561. package/docs/docs.json +105 -0
  562. package/docs/doctor.md +68 -0
  563. package/docs/elevated.md +31 -0
  564. package/docs/faq.md +736 -0
  565. package/docs/feature-inventory/overview.md +141 -0
  566. package/docs/feature-inventory/rollout-checklist.md +53 -0
  567. package/docs/feature-inventory/test-matrix.md +87 -0
  568. package/docs/feature-inventory.md +9 -0
  569. package/docs/gateway/configuration-examples.md +221 -0
  570. package/docs/gateway/configuration.md +172 -0
  571. package/docs/gateway/cron.md +61 -0
  572. package/docs/gateway/heartbeat.md +207 -0
  573. package/docs/gateway/pairing.md +109 -0
  574. package/docs/gateway-lock.md +28 -0
  575. package/docs/gateway.md +227 -0
  576. package/docs/gmail-pubsub.md +191 -0
  577. package/docs/grammy.md +27 -0
  578. package/docs/group-messages.md +73 -0
  579. package/docs/groups.md +130 -0
  580. package/docs/health.md +28 -0
  581. package/docs/heartbeat.md +73 -0
  582. package/docs/home-userspace.md +277 -0
  583. package/docs/hubs.md +148 -0
  584. package/docs/images.md +51 -0
  585. package/docs/imessage.md +94 -0
  586. package/docs/index.md +196 -0
  587. package/docs/ios.md +372 -0
  588. package/docs/linux.md +11 -0
  589. package/docs/location-command.md +95 -0
  590. package/docs/location.md +46 -0
  591. package/docs/logging.md +110 -0
  592. package/docs/lore.md +131 -0
  593. package/docs/mac/bun.md +133 -0
  594. package/docs/mac/canvas.md +161 -0
  595. package/docs/mac/child-process.md +72 -0
  596. package/docs/mac/dev-setup.md +81 -0
  597. package/docs/mac/health.md +28 -0
  598. package/docs/mac/icon.md +26 -0
  599. package/docs/mac/logging.md +51 -0
  600. package/docs/mac/menu-bar.md +69 -0
  601. package/docs/mac/peekaboo.md +170 -0
  602. package/docs/mac/permissions.md +40 -0
  603. package/docs/mac/release.md +76 -0
  604. package/docs/mac/remote.md +57 -0
  605. package/docs/mac/signing.md +41 -0
  606. package/docs/mac/skills.md +27 -0
  607. package/docs/mac/voice-overlay.md +52 -0
  608. package/docs/mac/voicewake.md +56 -0
  609. package/docs/mac/webchat.md +27 -0
  610. package/docs/mac/xpc.md +40 -0
  611. package/docs/macos.md +104 -0
  612. package/docs/model-failover.md +75 -0
  613. package/docs/models.md +91 -0
  614. package/docs/multi-agent.md +74 -0
  615. package/docs/nix.md +95 -0
  616. package/docs/nodes.md +157 -0
  617. package/docs/onboarding-config-protocol.md +34 -0
  618. package/docs/onboarding.md +189 -0
  619. package/docs/pairing.md +85 -0
  620. package/docs/plans/cron-add-hardening.md +72 -0
  621. package/docs/plans/group-policy-hardening.md +121 -0
  622. package/docs/poll.md +52 -0
  623. package/docs/prereqs.md +67 -0
  624. package/docs/presence.md +133 -0
  625. package/docs/proposals/model-config.md +147 -0
  626. package/docs/provider-routing.md +25 -0
  627. package/docs/queue.md +78 -0
  628. package/docs/reference/templates/AGENTS.md +226 -0
  629. package/docs/remote-gateway-readme.md +153 -0
  630. package/docs/remote.md +61 -0
  631. package/docs/research/memory.md +227 -0
  632. package/docs/rpc.md +35 -0
  633. package/docs/security.md +200 -0
  634. package/docs/session-ingestion.md +119 -0
  635. package/docs/session-tool.md +154 -0
  636. package/docs/session.md +85 -0
  637. package/docs/sessions.md +8 -0
  638. package/docs/setup.md +131 -0
  639. package/docs/showcase.md +37 -0
  640. package/docs/signal.md +122 -0
  641. package/docs/skills-config.md +68 -0
  642. package/docs/skills-scan.md +81 -0
  643. package/docs/skills-updates.md +113 -0
  644. package/docs/skills.md +166 -0
  645. package/docs/slack.md +221 -0
  646. package/docs/subagents.md +72 -0
  647. package/docs/tailscale.md +71 -0
  648. package/docs/talk.md +79 -0
  649. package/docs/telegram.md +96 -0
  650. package/docs/templates/AGENTS.md +226 -0
  651. package/docs/templates/BOOTSTRAP.md +55 -0
  652. package/docs/templates/IDENTITY.md +23 -0
  653. package/docs/templates/SOUL.md +41 -0
  654. package/docs/templates/TOOLS.md +41 -0
  655. package/docs/templates/USER.md +28 -0
  656. package/docs/test.md +43 -0
  657. package/docs/testing-onboarding-quickstart.md +76 -0
  658. package/docs/testing-philosophy.md +211 -0
  659. package/docs/thinking.md +46 -0
  660. package/docs/timezone.md +40 -0
  661. package/docs/tools.md +346 -0
  662. package/docs/troubleshooting.md +257 -0
  663. package/docs/tui.md +71 -0
  664. package/docs/typebox.md +42 -0
  665. package/docs/updating.md +138 -0
  666. package/docs/usage-cloud-aggregation-spec.md +133 -0
  667. package/docs/usage-suggestions-pipeline.md +126 -0
  668. package/docs/voicewake.md +61 -0
  669. package/docs/web.md +115 -0
  670. package/docs/webchat.md +34 -0
  671. package/docs/webhook.md +132 -0
  672. package/docs/whatsapp-clawd.jpg +0 -0
  673. package/docs/whatsapp.md +170 -0
  674. package/docs/windows.md +11 -0
  675. package/docs/wizard.md +167 -0
  676. package/package.json +186 -0
  677. package/patches/@mariozechner__pi-ai.patch +215 -0
  678. package/patches/playwright-core@1.57.0.patch +13 -0
  679. package/patches/qrcode-terminal.patch +12 -0
  680. package/scripts/postinstall.js +202 -0
  681. package/skills/connectors/brave-search/SKILL.md +36 -0
  682. package/skills/connectors/brave-search/docs/setup.md +40 -0
  683. package/skills/connectors/brave-search/docs/troubleshooting.md +37 -0
  684. package/skills/connectors/brave-search/docs/usage.md +28 -0
  685. package/skills/connectors/brave-search/scripts/content.mjs +53 -0
  686. package/skills/connectors/brave-search/scripts/search.mjs +79 -0
  687. package/skills/connectors/discord/SKILL.md +370 -0
  688. package/skills/connectors/gemini/SKILL.md +23 -0
  689. package/skills/connectors/github/SKILL.md +26 -0
  690. package/skills/connectors/github/docs/setup.md +21 -0
  691. package/skills/connectors/github/docs/troubleshooting.md +24 -0
  692. package/skills/connectors/google-oauth/SKILL.md +94 -0
  693. package/skills/connectors/notion/SKILL.md +156 -0
  694. package/skills/connectors/slack/SKILL.md +144 -0
  695. package/skills/connectors/telegram/SKILL.md +20 -0
  696. package/skills/connectors/telegram/docs/pairing.md +30 -0
  697. package/skills/connectors/telegram/docs/setup.md +41 -0
  698. package/skills/connectors/telegram/docs/webhook.md +17 -0
  699. package/skills/connectors/wacli/SKILL.md +48 -0
  700. package/skills/connectors/wacli/docs/auth.md +21 -0
  701. package/skills/connectors/wacli/docs/backup.md +9 -0
  702. package/skills/connectors/wacli/docs/troubleshooting.md +21 -0
  703. package/skills/guides/browser-use-agent-sdk/SKILL.md +90 -0
  704. package/skills/guides/filesystem/SKILL.md +217 -0
  705. package/skills/guides/json-render/SKILL.md +154 -0
  706. package/skills/guides/json-render/assets/components/README.md +21 -0
  707. package/skills/guides/json-render/assets/components/catalog.ts +78 -0
  708. package/skills/guides/json-render/assets/components/registry.tsx +172 -0
  709. package/skills/guides/json-render/assets/demo/App.css +397 -0
  710. package/skills/guides/json-render/assets/demo/App.tsx +897 -0
  711. package/skills/guides/json-render/assets/demo/README.md +22 -0
  712. package/skills/guides/json-render/assets/demo/catalog.ts +78 -0
  713. package/skills/guides/json-render/assets/demo/data/nexus-core.json +31 -0
  714. package/skills/guides/json-render/assets/demo/index.css +27 -0
  715. package/skills/guides/json-render/assets/demo/registry.tsx +150 -0
  716. package/skills/guides/json-render/docs/nexus-state-demo.md +84 -0
  717. package/skills/guides/json-render/docs/shadcn-preset.md +33 -0
  718. package/skills/guides/json-render/scripts/create-vite-demo.sh +45 -0
  719. package/skills/guides/json-render/scripts/llm-server/README.md +33 -0
  720. package/skills/guides/json-render/scripts/llm-server/catalog.ts +78 -0
  721. package/skills/guides/json-render/scripts/llm-server/package-lock.json +702 -0
  722. package/skills/guides/json-render/scripts/llm-server/package.json +18 -0
  723. package/skills/guides/json-render/scripts/llm-server/server.ts +285 -0
  724. package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-311.pyc +0 -0
  725. package/skills/tools/1password/SKILL.md +54 -0
  726. package/skills/tools/1password/docs/setup.md +85 -0
  727. package/skills/tools/1password/docs/troubleshooting.md +63 -0
  728. package/skills/tools/1password/references/cli-examples.md +29 -0
  729. package/skills/tools/1password/references/get-started.md +17 -0
  730. package/skills/tools/agent-browser/SKILL.md +450 -0
  731. package/skills/tools/agent-browser/docs/browser-use-eval.md +95 -0
  732. package/skills/tools/agent-browser/docs/first-tests.md +261 -0
  733. package/skills/tools/agent-browser/docs/wordle-nyt-eval.js +32 -0
  734. package/skills/tools/aix/SKILL.md +93 -0
  735. package/skills/tools/aix/docs/embeddings.md +40 -0
  736. package/skills/tools/aix/docs/setup.md +58 -0
  737. package/skills/tools/aix/docs/troubleshooting.md +41 -0
  738. package/skills/tools/aix/references/sql.md +48 -0
  739. package/skills/tools/apple-notes/SKILL.md +50 -0
  740. package/skills/tools/apple-reminders/SKILL.md +67 -0
  741. package/skills/tools/bear-notes/SKILL.md +79 -0
  742. package/skills/tools/bird/SKILL.md +32 -0
  743. package/skills/tools/bird/docs/auth.md +31 -0
  744. package/skills/tools/bird/docs/troubleshooting.md +31 -0
  745. package/skills/tools/blogwatcher/SKILL.md +46 -0
  746. package/skills/tools/blucli/SKILL.md +27 -0
  747. package/skills/tools/camsnap/SKILL.md +25 -0
  748. package/skills/tools/clawdhub/SKILL.md +53 -0
  749. package/skills/tools/coding-agent/SKILL.md +274 -0
  750. package/skills/tools/comms/SKILL.md +249 -0
  751. package/skills/tools/comms/docs/adapters.md +54 -0
  752. package/skills/tools/comms/docs/setup.md +56 -0
  753. package/skills/tools/comms/docs/troubleshooting.md +44 -0
  754. package/skills/tools/comms/references/schema.md +49 -0
  755. package/skills/tools/computer-use/SKILL.md +204 -0
  756. package/skills/tools/computer-use/docs/open-interpreter.md +26 -0
  757. package/skills/tools/computer-use/docs/peekaboo.md +26 -0
  758. package/skills/tools/computer-use/docs/setup.md +47 -0
  759. package/skills/tools/computer-use/docs/troubleshooting.md +33 -0
  760. package/skills/tools/eightctl/SKILL.md +29 -0
  761. package/skills/tools/eve/SKILL.md +215 -0
  762. package/skills/tools/eve/docs/dual-account.md +84 -0
  763. package/skills/tools/eve/docs/intelligence.md +58 -0
  764. package/skills/tools/eve/docs/setup.md +60 -0
  765. package/skills/tools/eve/docs/troubleshooting.md +54 -0
  766. package/skills/tools/eve/scripts/setup-dual-account.sh +125 -0
  767. package/skills/tools/food-order/SKILL.md +41 -0
  768. package/skills/tools/gh/SKILL.md +22 -0
  769. package/skills/tools/gh/docs/usage.md +41 -0
  770. package/skills/tools/gifgrep/SKILL.md +47 -0
  771. package/skills/tools/gog/SKILL.md +104 -0
  772. package/skills/tools/gog/docs/portability.md +94 -0
  773. package/skills/tools/gog/docs/setup.md +76 -0
  774. package/skills/tools/gog/docs/troubleshooting.md +94 -0
  775. package/skills/tools/gog/scripts/cdp/README.md +90 -0
  776. package/skills/tools/gog/scripts/cdp/add_test_users.py +69 -0
  777. package/skills/tools/gog/scripts/cdp/auth_add_accounts.py +209 -0
  778. package/skills/tools/gog/scripts/cdp/auth_add_accounts_manual.py +206 -0
  779. package/skills/tools/gog/scripts/cdp/create_oauth_client.py +165 -0
  780. package/skills/tools/gog/scripts/cdp/launch_cdp_chrome.sh +58 -0
  781. package/skills/tools/goplaces/SKILL.md +30 -0
  782. package/skills/tools/imsg/SKILL.md +25 -0
  783. package/skills/tools/local-places/SERVER_README.md +101 -0
  784. package/skills/tools/local-places/SKILL.md +91 -0
  785. package/skills/tools/local-places/pyproject.toml +27 -0
  786. package/skills/tools/local-places/src/local_places/__init__.py +2 -0
  787. package/skills/tools/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  788. package/skills/tools/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  789. package/skills/tools/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  790. package/skills/tools/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  791. package/skills/tools/local-places/src/local_places/google_places.py +314 -0
  792. package/skills/tools/local-places/src/local_places/main.py +65 -0
  793. package/skills/tools/local-places/src/local_places/schemas.py +107 -0
  794. package/skills/tools/mcporter/SKILL.md +38 -0
  795. package/skills/tools/model-usage/SKILL.md +45 -0
  796. package/skills/tools/model-usage/references/codexbar-cli.md +28 -0
  797. package/skills/tools/model-usage/scripts/model_usage.py +310 -0
  798. package/skills/tools/nano-banana-pro/SKILL.md +30 -0
  799. package/skills/tools/nano-banana-pro/scripts/generate_image.py +169 -0
  800. package/skills/tools/nano-pdf/SKILL.md +20 -0
  801. package/skills/tools/nexus-cloud/SKILL.md +54 -0
  802. package/skills/tools/nexus-cloud/docs/security.md +24 -0
  803. package/skills/tools/nexus-cloud/docs/setup.md +51 -0
  804. package/skills/tools/nexus-cloud/docs/troubleshooting.md +28 -0
  805. package/skills/tools/obsidian/SKILL.md +55 -0
  806. package/skills/tools/openai-image-gen/SKILL.md +31 -0
  807. package/skills/tools/openai-image-gen/scripts/gen.py +173 -0
  808. package/skills/tools/openai-whisper/SKILL.md +19 -0
  809. package/skills/tools/openai-whisper-api/SKILL.md +43 -0
  810. package/skills/tools/openai-whisper-api/scripts/transcribe.sh +85 -0
  811. package/skills/tools/openhue/SKILL.md +30 -0
  812. package/skills/tools/oracle/SKILL.md +105 -0
  813. package/skills/tools/ordercli/SKILL.md +47 -0
  814. package/skills/tools/peekaboo/SKILL.md +153 -0
  815. package/skills/tools/qmd/SKILL.md +32 -0
  816. package/skills/tools/qmd/docs/mcp.md +30 -0
  817. package/skills/tools/qmd/docs/ollama.md +42 -0
  818. package/skills/tools/qmd/docs/setup.md +44 -0
  819. package/skills/tools/sag/SKILL.md +62 -0
  820. package/skills/tools/skill-cli-template/SKILL.md +109 -0
  821. package/skills/tools/songsee/SKILL.md +29 -0
  822. package/skills/tools/sonoscli/SKILL.md +26 -0
  823. package/skills/tools/spotify-player/SKILL.md +34 -0
  824. package/skills/tools/summarize/SKILL.md +49 -0
  825. package/skills/tools/things-mac/SKILL.md +61 -0
  826. package/skills/tools/tmux/SKILL.md +121 -0
  827. package/skills/tools/tmux/scripts/find-sessions.sh +112 -0
  828. package/skills/tools/tmux/scripts/wait-for-text.sh +83 -0
  829. package/skills/tools/trello/SKILL.md +84 -0
  830. package/skills/tools/upstream-sync/SKILL.md +151 -0
  831. package/skills/tools/upstream-sync/scripts/auto-port.sh +227 -0
  832. package/skills/tools/upstream-sync/scripts/check-all.sh +88 -0
  833. package/skills/tools/upstream-sync/scripts/check-nexus.sh +146 -0
  834. package/skills/tools/upstream-sync/scripts/check-pi-ai.sh +129 -0
  835. package/skills/tools/video-frames/SKILL.md +29 -0
  836. package/skills/tools/video-frames/scripts/frame.sh +81 -0
  837. package/skills/tools/weather/SKILL.md +53 -0
  838. package/skills/tools/weather/docs/usage.md +40 -0
@@ -0,0 +1,31 @@
1
+ export const ANTHROPIC_SETUP_TOKEN_PREFIX = "sk-ant-oat01-";
2
+ export const ANTHROPIC_SETUP_TOKEN_MIN_LENGTH = 80;
3
+ export const DEFAULT_TOKEN_PROFILE_NAME = "default";
4
+ export function normalizeTokenProfileName(raw) {
5
+ const trimmed = raw.trim();
6
+ if (!trimmed)
7
+ return DEFAULT_TOKEN_PROFILE_NAME;
8
+ const slug = trimmed
9
+ .toLowerCase()
10
+ .replace(/[^a-z0-9._-]+/g, "-")
11
+ .replace(/-+/g, "-")
12
+ .replace(/^-+|-+$/g, "");
13
+ return slug || DEFAULT_TOKEN_PROFILE_NAME;
14
+ }
15
+ export function buildTokenProfileId(params) {
16
+ const provider = params.provider.toLowerCase().trim();
17
+ const name = normalizeTokenProfileName(params.name);
18
+ return `${provider}:${name}`;
19
+ }
20
+ export function validateAnthropicSetupToken(raw) {
21
+ const trimmed = raw.trim();
22
+ if (!trimmed)
23
+ return "Required";
24
+ if (!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX)) {
25
+ return `Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;
26
+ }
27
+ if (trimmed.length < ANTHROPIC_SETUP_TOKEN_MIN_LENGTH) {
28
+ return "Token looks too short; paste the full setup-token";
29
+ }
30
+ return undefined;
31
+ }
@@ -0,0 +1,228 @@
1
+ import { execFile } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { installSkill } from "../agents/skills-install.js";
6
+ import { resolveBootstrapPath, resolveStateDir } from "../config/paths.js";
7
+ import { NEXUS_ROOT } from "../utils.js";
8
+ const execFileAsync = promisify(execFile);
9
+ function firstName(full) {
10
+ const trimmed = full.trim();
11
+ if (!trimmed)
12
+ return trimmed;
13
+ return trimmed.split(/\s+/)[0] ?? trimmed;
14
+ }
15
+ function coerceStringArray(input) {
16
+ if (!Array.isArray(input))
17
+ return [];
18
+ return input
19
+ .map((v) => String(v))
20
+ .map((s) => s.trim())
21
+ .filter(Boolean);
22
+ }
23
+ function parseEveWhoamiJson(stdout) {
24
+ const raw = stdout.trim();
25
+ if (!raw)
26
+ return null;
27
+ try {
28
+ const parsed = JSON.parse(raw);
29
+ return {
30
+ ok: typeof parsed.ok === "boolean" ? parsed.ok : undefined,
31
+ name: typeof parsed.name === "string" ? parsed.name : undefined,
32
+ phones: coerceStringArray(parsed.phones),
33
+ emails: coerceStringArray(parsed.emails),
34
+ };
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ async function fileExists(p) {
41
+ try {
42
+ await fs.access(p);
43
+ return true;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ async function hasBin(bin) {
50
+ try {
51
+ const res = await execFileAsync("bash", ["-lc", `command -v ${bin}`], {
52
+ timeout: 5000,
53
+ });
54
+ return Boolean(res.stdout.trim());
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ }
60
+ async function resolveEveCommandPath() {
61
+ // Prefer PATH
62
+ if (await hasBin("eve"))
63
+ return "eve";
64
+ // Common user-local bin
65
+ const home = process.env.HOME?.trim();
66
+ if (home) {
67
+ const candidate = path.join(home, "bin", "eve");
68
+ try {
69
+ await fs.access(candidate);
70
+ return candidate;
71
+ }
72
+ catch {
73
+ // ignore
74
+ }
75
+ }
76
+ // Developer convenience (Tyler's repo layout)
77
+ // NOTE: not for general users; used only if present.
78
+ try {
79
+ const candidate = path.join(process.env.HOME || "", "nexus", "home", "projects", "eve", "bin", "eve");
80
+ if (candidate && (await fileExists(candidate)))
81
+ return candidate;
82
+ }
83
+ catch {
84
+ // ignore
85
+ }
86
+ return null;
87
+ }
88
+ function resolvePreset(presetRaw) {
89
+ const preset = (presetRaw ?? "").trim().toLowerCase();
90
+ if (preset === "jeeves") {
91
+ return {
92
+ agentName: "Jeeves",
93
+ creature: "Butler",
94
+ vibe: "helpful, discreet, fast",
95
+ emoji: "🎩",
96
+ };
97
+ }
98
+ // Default preset: neutral
99
+ return {
100
+ agentName: "Nexus bot",
101
+ creature: "Assistant",
102
+ vibe: "helpful and concise",
103
+ emoji: "🧠",
104
+ };
105
+ }
106
+ export async function applyBootstrapPreset(params) {
107
+ const { workspaceDir, runtime } = params;
108
+ const stateDir = resolveStateDir();
109
+ const agentId = process.env.NEXUS_AGENT_ID?.trim() || "default";
110
+ const agentIdentityDir = path.join(stateDir, "agents", agentId);
111
+ const userIdentityDir = path.join(stateDir, "user");
112
+ const bootstrapPath = resolveBootstrapPath(undefined, stateDir);
113
+ if (!(await fileExists(bootstrapPath)))
114
+ return;
115
+ await fs.mkdir(agentIdentityDir, { recursive: true });
116
+ await fs.mkdir(userIdentityDir, { recursive: true });
117
+ const identityPath = path.join(agentIdentityDir, "IDENTITY.md");
118
+ const userPath = path.join(userIdentityDir, "IDENTITY.md");
119
+ const soulPath = path.join(agentIdentityDir, "SOUL.md");
120
+ const agentsPath = path.join(NEXUS_ROOT, "AGENTS.md");
121
+ const preset = resolvePreset(params.preset);
122
+ const agentName = (params.agentName?.trim() || preset.agentName).trim();
123
+ let userName = params.userName?.trim() || "";
124
+ let preferredAddress = params.preferredAddress?.trim() || "";
125
+ let detectedPhones = [];
126
+ let detectedEmails = [];
127
+ const useEve = params.useEve !== undefined ? params.useEve : Boolean(params.preset);
128
+ if (useEve && process.platform === "darwin") {
129
+ let eveCmd = await resolveEveCommandPath();
130
+ if (!eveCmd) {
131
+ runtime.log("Installing Eve CLI (for bootstrap identity)…");
132
+ const tryInstall = async (installId) => await installSkill({
133
+ workspaceDir,
134
+ skillName: "eve",
135
+ installId,
136
+ timeoutMs: 15 * 60_000,
137
+ });
138
+ const installBrew = await tryInstall("brew");
139
+ if (!installBrew.ok) {
140
+ runtime.log(`Eve install (brew) failed (${installBrew.message}); trying go install…`);
141
+ const installGo = await tryInstall("go");
142
+ if (!installGo.ok) {
143
+ runtime.log(`Eve install (go) failed (${installGo.message}); continuing without Eve.`);
144
+ }
145
+ }
146
+ eveCmd = await resolveEveCommandPath();
147
+ }
148
+ if (eveCmd) {
149
+ try {
150
+ await execFileAsync(eveCmd, ["init"], { timeout: 60_000 });
151
+ }
152
+ catch (err) {
153
+ runtime.log(`Eve init failed; continuing without Eve identity: ${err instanceof Error ? err.message : String(err)}`);
154
+ }
155
+ try {
156
+ const res = await execFileAsync(eveCmd, ["whoami"], {
157
+ timeout: 30_000,
158
+ });
159
+ const whoami = parseEveWhoamiJson(res.stdout);
160
+ if (whoami?.name)
161
+ userName = whoami.name;
162
+ detectedPhones = whoami?.phones ?? [];
163
+ detectedEmails = whoami?.emails ?? [];
164
+ if (!preferredAddress && whoami?.name)
165
+ preferredAddress = firstName(whoami.name);
166
+ }
167
+ catch (err) {
168
+ runtime.log(`Eve whoami failed; continuing without Eve identity: ${err instanceof Error ? err.message : String(err)}`);
169
+ }
170
+ }
171
+ }
172
+ if (!userName)
173
+ userName = "Test User";
174
+ if (!preferredAddress)
175
+ preferredAddress = firstName(userName) || "friend";
176
+ const identityMd = `---
177
+ name: ${agentName}
178
+ emoji: ${preset.emoji}
179
+ creature: ${preset.creature}
180
+ vibe: ${preset.vibe}
181
+ ---
182
+ # IDENTITY.md - Agent Identity
183
+
184
+ - Name: ${agentName}
185
+ - Creature: ${preset.creature}
186
+ - Vibe: ${preset.vibe}
187
+ - Emoji: ${preset.emoji}
188
+ `;
189
+ const userMd = `---
190
+ name: ${userName}
191
+ call: ${preferredAddress}
192
+ ---
193
+ # IDENTITY.md - User Identity
194
+
195
+ - Name: ${userName}
196
+ - What to call them: ${preferredAddress}
197
+ - Pronouns (optional):
198
+ - Timezone (optional):
199
+ - Notes:
200
+ ${detectedPhones.length ? `\n- Phones: ${detectedPhones.join(", ")}\n` : ""}
201
+ ${detectedEmails.length ? `\n- Emails: ${detectedEmails.join(", ")}\n` : ""}
202
+ `;
203
+ // Keep SOUL.md if user already customized it; otherwise seed a helpful default.
204
+ const soulExists = await fileExists(soulPath);
205
+ if (!soulExists) {
206
+ const soulMd = `# SOUL.md - Persona & Boundaries
207
+
208
+ - Be concise and direct.
209
+ - Ask clarifying questions when needed.
210
+ - Never send messages to external services without explicit user confirmation.
211
+ `;
212
+ await fs.writeFile(soulPath, soulMd, "utf-8");
213
+ }
214
+ await fs.writeFile(identityPath, identityMd, "utf-8");
215
+ await fs.writeFile(userPath, userMd, "utf-8");
216
+ // Annotate AGENTS.md so future agents know Eve can supply identity data.
217
+ try {
218
+ const agents = await fs.readFile(agentsPath, "utf-8");
219
+ if (!agents.includes("## Identity helpers")) {
220
+ const appendix = `\n\n## Identity helpers\n\n- You can use \`eve whoami\` (macOS) to detect the user's name/phones/emails from Messages.\n- You can use \`imsg\` to list chats/history and send messages (confirm before sending).\n`;
221
+ await fs.writeFile(agentsPath, `${agents.trimEnd()}${appendix}`, "utf-8");
222
+ }
223
+ }
224
+ catch {
225
+ // ignore
226
+ }
227
+ // Bootstrap prompt remains in state; Nexus will ignore it once identity exists.
228
+ }
@@ -0,0 +1,63 @@
1
+ import { detectCapabilities } from "../capabilities/detector.js";
2
+ import { defaultRuntime } from "../runtime.js";
3
+ const STATUS_ICON = {
4
+ active: "✅",
5
+ ready: "⭐",
6
+ needs_setup: "🔧",
7
+ needs_install: "📥",
8
+ unavailable: "⛔",
9
+ broken: "❌",
10
+ };
11
+ function normalizeCategory(input) {
12
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, "");
13
+ }
14
+ function normalizeStatus(input) {
15
+ if (!input)
16
+ return undefined;
17
+ return input.toLowerCase().replace(/-/g, "_");
18
+ }
19
+ export async function capabilitiesCommand(opts, runtime = defaultRuntime) {
20
+ const { registry, capabilities, summary } = detectCapabilities();
21
+ const statusFilter = normalizeStatus(opts?.status);
22
+ const categoryFilter = opts?.category
23
+ ? normalizeCategory(opts.category)
24
+ : undefined;
25
+ const filtered = capabilities.filter((cap) => {
26
+ if (statusFilter && cap.status !== statusFilter)
27
+ return false;
28
+ if (categoryFilter) {
29
+ const normalized = normalizeCategory(cap.category);
30
+ if (normalized !== categoryFilter)
31
+ return false;
32
+ }
33
+ return true;
34
+ });
35
+ if (opts?.json) {
36
+ runtime.log(JSON.stringify({
37
+ platform: `${process.platform}/${process.arch}`,
38
+ summary,
39
+ capabilities: filtered,
40
+ }, null, 2));
41
+ return;
42
+ }
43
+ runtime.log(`\nNexus Capabilities (${process.platform}/${process.arch})`);
44
+ runtime.log("Legend: ✅ active ⭐ ready 🔧 needs-setup 📥 needs-install ⛔ unavailable ❌ broken\n");
45
+ for (const [category, _entries] of Object.entries(registry.categories)) {
46
+ const categoryCaps = filtered.filter((cap) => cap.category === category);
47
+ if (categoryCaps.length === 0)
48
+ continue;
49
+ const activeCount = categoryCaps.filter((cap) => cap.status === "active").length;
50
+ runtime.log(`${category} (${activeCount}/${categoryCaps.length})`);
51
+ for (const cap of categoryCaps) {
52
+ const icon = STATUS_ICON[cap.status] ?? "•";
53
+ if (opts?.compact) {
54
+ runtime.log(` ${icon} ${cap.id}`);
55
+ }
56
+ else {
57
+ const providers = cap.providers.map((p) => p.id).join(", ");
58
+ runtime.log(` ${icon} ${cap.id} — ${providers || cap.providersRaw}`);
59
+ }
60
+ }
61
+ runtime.log("");
62
+ }
63
+ }
@@ -0,0 +1,144 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { createServer } from "node:http";
3
+ import { CHUTES_AUTHORIZE_ENDPOINT, exchangeChutesCodeForTokens, generateChutesPkce, parseOAuthCallbackInput, } from "../agents/chutes-oauth.js";
4
+ function buildAuthorizeUrl(params) {
5
+ const qs = new URLSearchParams({
6
+ client_id: params.clientId,
7
+ redirect_uri: params.redirectUri,
8
+ response_type: "code",
9
+ scope: params.scopes.join(" "),
10
+ state: params.state,
11
+ code_challenge: params.challenge,
12
+ code_challenge_method: "S256",
13
+ });
14
+ return `${CHUTES_AUTHORIZE_ENDPOINT}?${qs.toString()}`;
15
+ }
16
+ async function waitForLocalCallback(params) {
17
+ const redirectUrl = new URL(params.redirectUri);
18
+ if (redirectUrl.protocol !== "http:") {
19
+ throw new Error(`Chutes OAuth redirect URI must be http:// (got ${params.redirectUri})`);
20
+ }
21
+ const hostname = redirectUrl.hostname || "127.0.0.1";
22
+ const port = redirectUrl.port ? Number.parseInt(redirectUrl.port, 10) : 80;
23
+ const expectedPath = redirectUrl.pathname || "/";
24
+ return await new Promise((resolve, reject) => {
25
+ let timeout = null;
26
+ const server = createServer((req, res) => {
27
+ try {
28
+ const requestUrl = new URL(req.url ?? "/", redirectUrl.origin);
29
+ if (requestUrl.pathname !== expectedPath) {
30
+ res.statusCode = 404;
31
+ res.setHeader("Content-Type", "text/plain; charset=utf-8");
32
+ res.end("Not found");
33
+ return;
34
+ }
35
+ const code = requestUrl.searchParams.get("code")?.trim();
36
+ const state = requestUrl.searchParams.get("state")?.trim();
37
+ if (!code) {
38
+ res.statusCode = 400;
39
+ res.setHeader("Content-Type", "text/plain; charset=utf-8");
40
+ res.end("Missing code");
41
+ return;
42
+ }
43
+ if (!state || state !== params.expectedState) {
44
+ res.statusCode = 400;
45
+ res.setHeader("Content-Type", "text/plain; charset=utf-8");
46
+ res.end("Invalid state");
47
+ return;
48
+ }
49
+ res.statusCode = 200;
50
+ res.setHeader("Content-Type", "text/html; charset=utf-8");
51
+ res.end([
52
+ "<!doctype html>",
53
+ "<html><head><meta charset='utf-8' /></head>",
54
+ "<body><h2>Chutes OAuth complete</h2>",
55
+ "<p>You can close this window and return to nexus.</p></body></html>",
56
+ ].join(""));
57
+ if (timeout)
58
+ clearTimeout(timeout);
59
+ server.close();
60
+ resolve({ code, state });
61
+ }
62
+ catch (err) {
63
+ if (timeout)
64
+ clearTimeout(timeout);
65
+ server.close();
66
+ reject(err);
67
+ }
68
+ });
69
+ server.once("error", (err) => {
70
+ if (timeout)
71
+ clearTimeout(timeout);
72
+ server.close();
73
+ reject(err);
74
+ });
75
+ server.listen(port, hostname, () => {
76
+ params.onProgress?.(`Waiting for OAuth callback on ${redirectUrl.origin}${expectedPath}…`);
77
+ });
78
+ timeout = setTimeout(() => {
79
+ try {
80
+ server.close();
81
+ }
82
+ catch { }
83
+ reject(new Error("OAuth callback timeout"));
84
+ }, params.timeoutMs);
85
+ });
86
+ }
87
+ export async function loginChutes(params) {
88
+ const createPkce = params.createPkce ?? generateChutesPkce;
89
+ const createState = params.createState ?? (() => randomBytes(16).toString("hex"));
90
+ const { verifier, challenge } = createPkce();
91
+ const state = createState();
92
+ const timeoutMs = params.timeoutMs ?? 3 * 60 * 1000;
93
+ const url = buildAuthorizeUrl({
94
+ clientId: params.app.clientId,
95
+ redirectUri: params.app.redirectUri,
96
+ scopes: params.app.scopes,
97
+ state,
98
+ challenge,
99
+ });
100
+ let codeAndState;
101
+ if (params.manual) {
102
+ await params.onAuth({ url });
103
+ params.onProgress?.("Waiting for redirect URL…");
104
+ const input = await params.onPrompt({
105
+ message: "Paste the redirect URL (or authorization code)",
106
+ placeholder: `${params.app.redirectUri}?code=...&state=...`,
107
+ });
108
+ const parsed = parseOAuthCallbackInput(String(input), state);
109
+ if ("error" in parsed)
110
+ throw new Error(parsed.error);
111
+ if (parsed.state !== state)
112
+ throw new Error("Invalid OAuth state");
113
+ codeAndState = parsed;
114
+ }
115
+ else {
116
+ const callback = waitForLocalCallback({
117
+ redirectUri: params.app.redirectUri,
118
+ expectedState: state,
119
+ timeoutMs,
120
+ onProgress: params.onProgress,
121
+ }).catch(async () => {
122
+ params.onProgress?.("OAuth callback not detected; paste redirect URL…");
123
+ const input = await params.onPrompt({
124
+ message: "Paste the redirect URL (or authorization code)",
125
+ placeholder: `${params.app.redirectUri}?code=...&state=...`,
126
+ });
127
+ const parsed = parseOAuthCallbackInput(String(input), state);
128
+ if ("error" in parsed)
129
+ throw new Error(parsed.error);
130
+ if (parsed.state !== state)
131
+ throw new Error("Invalid OAuth state");
132
+ return parsed;
133
+ });
134
+ await params.onAuth({ url });
135
+ codeAndState = await callback;
136
+ }
137
+ params.onProgress?.("Exchanging code for tokens…");
138
+ return await exchangeChutesCodeForTokens({
139
+ app: params.app,
140
+ code: codeAndState.code,
141
+ codeVerifier: verifier,
142
+ fetchFn: params.fetchFn,
143
+ });
144
+ }
@@ -0,0 +1,138 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { buildWorkspaceSkillSnapshot, getSkillMetadata, loadWorkspaceSkillEntries, } from "../agents/skills.js";
4
+ import { loadConfig } from "../config/config.js";
5
+ import { defaultRuntime } from "../runtime.js";
6
+ /**
7
+ * Generate CLAUDE.md file with Nexus skills and workspace context.
8
+ *
9
+ * This allows Claude Code to understand available Nexus skills and workspace structure.
10
+ * The CLAUDE.md file includes:
11
+ * - Workspace information and structure
12
+ * - All loaded skill documentation
13
+ * - Skill metadata (requirements, env vars, install instructions)
14
+ * - Nexus tools and utilities available
15
+ *
16
+ * Usage:
17
+ * nexus claude-md [--workspace <path>]
18
+ */
19
+ export async function claudeMdCommand(opts, runtime = defaultRuntime) {
20
+ const workspaceDir = opts?.workspace?.trim() ||
21
+ path.join(process.env.HOME || "~", "nexus", "home");
22
+ runtime.log(`Generating CLAUDE.md for workspace: ${workspaceDir}`);
23
+ // Load config
24
+ const config = loadConfig();
25
+ // Build skill snapshot (this gives us the formatted prompt)
26
+ const snapshot = buildWorkspaceSkillSnapshot(workspaceDir, { config });
27
+ // Also load skill entries to get metadata
28
+ const skillEntries = loadWorkspaceSkillEntries(workspaceDir, { config });
29
+ runtime.log(`Found ${skillEntries.length} skills`);
30
+ // Build CLAUDE.md content
31
+ let claudeContent = `# Nexus Workspace Context
32
+
33
+ This file provides context for Claude Code when working in this Nexus workspace.
34
+
35
+ **Auto-generated by \`nexus claude-md\`** - To regenerate, run \`nexus claude-md\`
36
+
37
+ ## Workspace Overview
38
+
39
+ This is a Nexus workspace located at \`${workspaceDir}\`.
40
+
41
+ Nexus is an AI operating system that provides:
42
+ - Multi-provider messaging integration (WhatsApp, Telegram, Discord, Signal, etc.)
43
+ - Agent runtime with skills and tools
44
+ - Browser automation and canvas control
45
+ - Session management and persistence
46
+ - Control plane abstraction (single-agent and ODU modes)
47
+
48
+ ## Available Skills
49
+
50
+ You have access to **${skillEntries.length} Nexus skills**. Each skill provides specialized functionality that can be invoked by the Nexus agent.
51
+
52
+ ### Skill Summary
53
+
54
+ `;
55
+ // Add skill metadata
56
+ for (const entry of skillEntries) {
57
+ const metadata = getSkillMetadata(entry);
58
+ const skillName = entry.skill.name;
59
+ claudeContent += `#### ${skillName}\n\n`;
60
+ if (metadata) {
61
+ if (metadata.os && metadata.os.length > 0) {
62
+ claudeContent += `- **OS compatibility:** ${metadata.os.join(", ")}\n`;
63
+ }
64
+ if (metadata.requires?.bins && metadata.requires.bins.length > 0) {
65
+ claudeContent += `- **Required binaries:** \`${metadata.requires.bins.join("`, `")}\`\n`;
66
+ }
67
+ if (metadata.requires?.env && metadata.requires.env.length > 0) {
68
+ claudeContent += `- **Required environment variables:** \`${metadata.requires.env.join("`, `")}\`\n`;
69
+ }
70
+ if (metadata.primaryEnv) {
71
+ claudeContent += `- **Primary environment variable:** \`${metadata.primaryEnv}\`\n`;
72
+ }
73
+ if (metadata.homepage) {
74
+ claudeContent += `- **Documentation:** ${metadata.homepage}\n`;
75
+ }
76
+ }
77
+ claudeContent += `\n`;
78
+ }
79
+ // Add the full formatted skills documentation
80
+ claudeContent += `## Complete Skills Documentation
81
+
82
+ The following is the complete documentation for all loaded skills, formatted exactly as the Nexus agent receives it at runtime:
83
+
84
+ \`\`\`markdown
85
+ ${snapshot.prompt}
86
+ \`\`\`
87
+
88
+ ## Nexus Tools
89
+
90
+ The Nexus agent has access to various tools beyond skills:
91
+
92
+ - **Browser control:** Automated browser interaction via Playwright
93
+ - **Canvas host:** Screen/camera capture and manipulation
94
+ - **Session management:** Persistent conversation history across providers
95
+ - **Workspace management:** Isolated project environments
96
+ - **Cron scheduling:** Automated task execution
97
+ - **Gateway routing:** Multi-provider message routing and control
98
+
99
+ ## Working with This Workspace
100
+
101
+ When coding in this workspace:
102
+
103
+ 1. **Use skills:** Reference the skills documentation above to understand available functionality
104
+ 2. **Check metadata:** Verify OS/binary/env requirements before using a skill
105
+ 3. **Test locally:** Skills run in the Nexus agent runtime with these exact capabilities
106
+ 4. **Workspace structure:**
107
+ - \`${workspaceDir}/\` - Main workspace directory
108
+ - \`~/nexus/state/\` - Nexus state directory (sessions, logs, config)
109
+ - \`~/nexus/state/nexus.json\` - Nexus configuration file
110
+
111
+ ## Configuration
112
+
113
+ To modify Nexus behavior, edit \`~/nexus/state/nexus.json\`.
114
+
115
+ Key configuration options:
116
+ - \`agent.thinkingDefault\` - Default thinking level ("low", "medium", "high")
117
+ - \`agent.verboseDefault\` - Default verbose mode (boolean)
118
+ - \`agent.timeoutSeconds\` - Agent timeout in seconds
119
+ - \`controlPlane.mode\` - Control plane mode ("single" or "odu")
120
+
121
+ ## Additional Resources
122
+
123
+ - Run \`nexus doctor\` to verify your Nexus installation
124
+ - Run \`nexus --help\` to see all available CLI commands
125
+ - Check \`~/nexus/state/logs/\` for Nexus logs
126
+
127
+ ---
128
+
129
+ *This file was auto-generated on ${new Date().toISOString()}*
130
+ `;
131
+ // Write CLAUDE.md file
132
+ const claudeMdPath = path.join(workspaceDir, "CLAUDE.md");
133
+ await fs.writeFile(claudeMdPath, claudeContent, "utf-8");
134
+ runtime.log(`✓ Generated CLAUDE.md`);
135
+ runtime.log(` Path: ${claudeMdPath}`);
136
+ runtime.log(` Skills included: ${skillEntries.length}`);
137
+ runtime.log(`\nClaude Code will now understand your Nexus workspace!`);
138
+ }
@@ -0,0 +1,11 @@
1
+ import { readConfigFileSnapshot } from "../config/config.js";
2
+ import { defaultRuntime } from "../runtime.js";
3
+ export async function configViewCommand(opts, runtime = defaultRuntime) {
4
+ const snapshot = await readConfigFileSnapshot();
5
+ if (opts?.json) {
6
+ runtime.log(JSON.stringify(snapshot, null, 2));
7
+ return;
8
+ }
9
+ runtime.log(`Config path: ${snapshot.path}`);
10
+ runtime.log(`Exists: ${snapshot.exists ? "yes" : "no"}`);
11
+ }