@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,947 @@
1
+ # Skills Specification
2
+
3
+ Complete specification for the Nexus skill system: structure, types, state, usage tracking, and discovery.
4
+
5
+ ## Related Work / Inspiration
6
+
7
+ This specification draws from several sources:
8
+
9
+ - **Dex (Chetan Conikee)** — Skill crystallization, adapter pattern, fingerprinting, adaptive forgetting, workspace recording as training data
10
+ - **Taxonomy Discussion (Opus)** — Clean separation of Connector → Tool → Skill layers, abstract interfaces, "skills are stateless prompts"
11
+ - **Claude Skills / ClawdHub** — SKILL.md format, skill sharing hub, tool mappings
12
+ - **MCP (Anthropic)** — Protocol patterns, tool definitions, server manifests
13
+
14
+ Key insights incorporated:
15
+ 1. Skills should be **stateless prompts** — tools own state, not skills
16
+ 2. **Crystallization** is a powerful optimization for repeated workflows
17
+ 3. **Abstract interfaces** enable portability (email_sender vs gog)
18
+ 4. **Fingerprinting** enables security and drift detection
19
+ 5. **Workspace as training data** — usage logs are valuable
20
+
21
+ ---
22
+
23
+ ## 1. What is a Skill?
24
+
25
+ A **skill** is a packaged capability that an agent can use. It consists of:
26
+
27
+ 1. **SKILL.md** — The prompt/instructions + metadata (required)
28
+ 2. **Supporting files** — Scripts, docs, references (optional)
29
+ 3. **Runtime state** — Tracked in `~/nexus/state/nexus/skills/{skill}/` (managed by nexus)
30
+
31
+ Skills are the atomic units of agent capability. They can be:
32
+ - **Pure prompts** — Just instructions the agent follows
33
+ - **Tool-backed** — Require a binary installed on the system
34
+ - **Script-backed** — Run via interpreter (node, python)
35
+ - **Connector-backed** — Require external credentials/API keys
36
+
37
+ ### 1.1 Conceptual Layering
38
+
39
+ To understand skills properly, we need to distinguish three layers:
40
+
41
+ ```
42
+ ┌─────────────────────────────────────────────────────────────────┐
43
+ │ SKILL (Prompt Layer) │
44
+ │ • Stateless instructions (.md file) │
45
+ │ • References tools and connectors │
46
+ │ • Distributable as .md + manifest │
47
+ └─────────────────────────────────────────────────────────────────┘
48
+ ↓ uses
49
+ ┌─────────────────────────────────────────────────────────────────┐
50
+ │ TOOL (Capability Layer) │
51
+ │ • Binary/CLI that performs work │
52
+ │ • Stateful — owns caches, databases, files │
53
+ │ • May depend on connectors │
54
+ └─────────────────────────────────────────────────────────────────┘
55
+ ↓ authenticates via
56
+ ┌─────────────────────────────────────────────────────────────────┐
57
+ │ CONNECTOR (Auth Layer) │
58
+ │ • Auth + API endpoint access │
59
+ │ • Stateless — just credentials │
60
+ │ • Maps to ~/nexus/state/credentials/ │
61
+ └─────────────────────────────────────────────────────────────────┘
62
+ ```
63
+
64
+ **Key insight:** Skills are prompts (stateless). Tools have state. Connectors are just auth.
65
+
66
+ This means:
67
+ - **Skills don't have state** — They're just instructions
68
+ - **Runtime state** (`state.json`, `usage.log`) tracks skill *execution*, not skill *data*
69
+ - **Tool state** lives in the tool's own location (e.g., `~/.config/gog/`)
70
+ - **Connector state** lives in `~/nexus/state/credentials/`
71
+
72
+ ---
73
+
74
+ ## 2. SKILL.md Structure
75
+
76
+ ### 2.1 Frontmatter (YAML)
77
+
78
+ ```yaml
79
+ ---
80
+ name: skill-name
81
+ description: One-line description of what the skill does
82
+ homepage: https://example.com/docs
83
+ metadata: {"nexus":{...}}
84
+ ---
85
+ ```
86
+
87
+ | Field | Required | Description |
88
+ |-------|----------|-------------|
89
+ | `name` | Yes | Unique identifier (lowercase, kebab-case) |
90
+ | `description` | Yes | Brief description for agent context |
91
+ | `homepage` | No | Link to documentation/source |
92
+ | `metadata` | No | JSON object with nexus-specific config |
93
+
94
+ ### 2.2 Nexus Metadata Object
95
+
96
+ The `metadata` field contains a JSON object with a `nexus` key:
97
+
98
+ ```json
99
+ {
100
+ "nexus": {
101
+ "emoji": "📧",
102
+ "os": ["darwin", "linux"],
103
+ "requires": {
104
+ "bins": ["gog"],
105
+ "anyBins": ["interpreter", "peekaboo"],
106
+ "env": ["BRAVE_API_KEY"],
107
+ "config": ["browser.enabled"]
108
+ },
109
+ "install": [
110
+ {
111
+ "id": "brew",
112
+ "kind": "brew",
113
+ "formula": "steipete/tap/gogcli",
114
+ "bins": ["gog"],
115
+ "label": "Install gog (brew)"
116
+ }
117
+ ],
118
+ "primaryEnv": "BRAVE_API_KEY",
119
+ "skillKey": "brave",
120
+ "bundled": true,
121
+ "priority": "high",
122
+ "always": true
123
+ }
124
+ }
125
+ ```
126
+
127
+ | Field | Type | Description |
128
+ |-------|------|-------------|
129
+ | `emoji` | string | Visual identifier for the skill |
130
+ | `os` | string[] | Platform restrictions: `["darwin", "linux", "win32"]` |
131
+ | `requires.bins` | string[] | ALL of these binaries must exist in PATH |
132
+ | `requires.anyBins` | string[] | ANY ONE of these binaries must exist |
133
+ | `requires.env` | string[] | Required environment variables |
134
+ | `requires.config` | string[] | Required nexus config paths (e.g., `browser.enabled`) |
135
+ | `install` | InstallSpec[] | How to install required tools |
136
+ | `primaryEnv` | string | Main env var for API key (used with `apiKey` in config) |
137
+ | `skillKey` | string | Override key for skill-specific config lookup |
138
+ | `bundled` | boolean | True if this ships with nexus-core |
139
+ | `priority` | string | `"high"` for skills that should load early |
140
+ | `always` | boolean | True to always include, ignoring requirements |
141
+
142
+ ### 2.3 Install Specification
143
+
144
+ ```typescript
145
+ type InstallSpec = {
146
+ id: string; // Unique identifier for this install option
147
+ kind: "brew" | "node" | "go" | "uv" | "shell";
148
+ formula?: string; // For brew
149
+ package?: string; // For npm/go/uv
150
+ module?: string; // For uv pip
151
+ script?: string; // For shell
152
+ bins?: string[]; // Binaries this install provides
153
+ label?: string; // Human-readable label
154
+ };
155
+ ```
156
+
157
+ ### 2.4 Body (Markdown)
158
+
159
+ After the frontmatter, the rest of the file is the skill's prompt/instructions:
160
+
161
+ ```markdown
162
+ # Skill Name
163
+
164
+ Brief description and context.
165
+
166
+ ## Commands
167
+
168
+ ```bash
169
+ tool-name subcommand --flag value
170
+ ```
171
+
172
+ ## Workflow
173
+
174
+ 1. Step one
175
+ 2. Step two
176
+
177
+ ## Examples
178
+
179
+ ...
180
+
181
+ ## Guardrails
182
+
183
+ - Safety rule 1
184
+ - Safety rule 2
185
+ ```
186
+
187
+ The body should include:
188
+ - **Commands/Usage** — How to invoke the skill's tools
189
+ - **Workflow** — Recommended order of operations
190
+ - **Examples** — Real command examples
191
+ - **Guardrails** — Safety rules and limitations
192
+ - **References** — Links to supporting docs in the skill folder
193
+
194
+ ---
195
+
196
+ ## 3. Skill Types
197
+
198
+ Skills are classified into three types based on execution method:
199
+
200
+ ### 3.1 Pure Prompt Skills
201
+
202
+ **No external tool required.** The skill is purely instructional.
203
+
204
+ ```typescript
205
+ const PROMPT_ONLY_SKILLS = new Set([
206
+ "filesystem", // Shell commands for file organization
207
+ "computer-use", // Instructions for using automation tools
208
+ "weather", // Use web search/APIs
209
+ "github", // Use gh CLI (usually pre-installed)
210
+ "discord", // MCP or API usage patterns
211
+ "apple-notes", // AppleScript/osascript patterns
212
+ "apple-reminders", // AppleScript/osascript patterns
213
+ "onboarding", // Nexus internal
214
+ ]);
215
+ ```
216
+
217
+ **Characteristics:**
218
+ - Always "configured" (no verification needed)
219
+ - Prompt is returned directly via `nexus skill run <name>`
220
+ - Zero dependencies
221
+
222
+ ### 3.2 Tool-Backed Skills
223
+
224
+ **Require a binary installed on the system.**
225
+
226
+ ```typescript
227
+ const KNOWN_SKILL_TOOLS: Record<string, ToolSkillConfig> = {
228
+ gog: {
229
+ tool: "gog",
230
+ verify: "gog gmail labels list --account default",
231
+ requiresAuth: true,
232
+ },
233
+ eve: {
234
+ tool: "eve",
235
+ verify: "eve messages --limit 1",
236
+ requiresAuth: true,
237
+ },
238
+ "1password": {
239
+ tool: "op",
240
+ verify: "op whoami",
241
+ requiresAuth: true,
242
+ },
243
+ tmux: {
244
+ tool: "tmux",
245
+ verify: "tmux -V",
246
+ },
247
+ // ... etc
248
+ };
249
+
250
+ type ToolSkillConfig = {
251
+ tool: string; // Binary name
252
+ verify: string; // Command to verify it works
253
+ requiresAuth?: boolean; // Needs OAuth/login
254
+ configEnv?: string[]; // Env vars that indicate config
255
+ };
256
+ ```
257
+
258
+ **Characteristics:**
259
+ - `nexus skill run <name> -- args` passes args to the tool
260
+ - Verification runs the verify command
261
+ - Gateway captures stdout/stderr/exit code
262
+
263
+ ### 3.3 Script-Backed Skills
264
+
265
+ **Run via an interpreter (node, python, etc).**
266
+
267
+ ```typescript
268
+ const SCRIPT_SKILLS: Record<string, ScriptSkillConfig> = {
269
+ "brave-search": {
270
+ runner: "node",
271
+ script: "scripts/search.mjs",
272
+ requiredEnv: ["BRAVE_API_KEY"],
273
+ },
274
+ "openai-image-gen": {
275
+ runner: "python",
276
+ script: "scripts/gen.py",
277
+ requiredEnv: ["OPENAI_API_KEY"],
278
+ },
279
+ };
280
+
281
+ type ScriptSkillConfig = {
282
+ runner: string; // Interpreter binary
283
+ script: string; // Relative path from skill dir
284
+ requiredEnv?: string[];// Required env vars
285
+ };
286
+ ```
287
+
288
+ **Characteristics:**
289
+ - `nexus skill run <name> -- args` runs `runner script args`
290
+ - Working directory is the skill folder
291
+ - Requires both interpreter and env vars
292
+
293
+ ### 3.4 Connector Classification
294
+
295
+ **Orthogonal to type:** Any skill can also be a "connector" if it requires external credentials:
296
+
297
+ | Classification | Needs | Examples |
298
+ |---------------|-------|----------|
299
+ | **Pure Prompt** | Nothing | filesystem, weather |
300
+ | **Tool** | Binary only | tmux, ffmpeg |
301
+ | **Tool + Connector** | Binary + OAuth/API | gog, eve, 1password |
302
+ | **Script + Connector** | Interpreter + API key | brave-search, openai-image-gen |
303
+
304
+ Connectors are important for the capability taxonomy because they represent the "locked" capabilities that require user action to enable.
305
+
306
+ ---
307
+
308
+ ## 4. Per-Skill State
309
+
310
+ ### 4.1 Storage Location
311
+
312
+ **Decision: Per-skill folders (not single file)**
313
+
314
+ ```
315
+ ~/nexus/state/
316
+ └── nexus/
317
+ └── skills/
318
+ ├── manifest.json # Discovery manifest
319
+ ├── gog/
320
+ │ ├── state.json
321
+ │ └── usage.log
322
+ ├── eve/
323
+ │ ├── state.json
324
+ │ └── usage.log
325
+ └── filesystem/
326
+ ├── state.json
327
+ └── usage.log
328
+ ```
329
+
330
+ **Why per-skill folders?**
331
+ - **Isolation**: Skill state is self-contained
332
+ - **Git-friendliness**: Can track individual skills
333
+ - **Partial reads**: Don't load entire state file for one skill
334
+ - **Future extensibility**: Can add more per-skill files (custom config, etc)
335
+
336
+ ### 4.2 State Schema (`state.json`)
337
+
338
+ ```typescript
339
+ type SkillState = {
340
+ version: 1;
341
+
342
+ // Execution metadata (from KNOWN_SKILL_TOOLS or detected)
343
+ tool?: string; // CLI binary name
344
+ verify?: string; // Verification command
345
+ type?: "tool" | "script" | "prompt";
346
+
347
+ // Runtime state (updated by gateway)
348
+ configured: boolean; // Has verification passed?
349
+ configuredAt?: string; // ISO timestamp of first success
350
+ lastVerified?: string; // ISO timestamp of last verify attempt
351
+ lastUsed?: string; // ISO timestamp of last execution
352
+ lastError?: string; // Last error message (truncated)
353
+
354
+ // Computed stats (from usage log)
355
+ totalInvocations?: number;
356
+ successRate?: number; // 0-1
357
+ avgDurationMs?: number;
358
+ };
359
+ ```
360
+
361
+ **Example:**
362
+ ```json
363
+ {
364
+ "version": 1,
365
+ "tool": "gog",
366
+ "verify": "gog gmail labels list --account default",
367
+ "type": "tool",
368
+ "configured": true,
369
+ "configuredAt": "2026-01-10T15:30:00Z",
370
+ "lastVerified": "2026-01-14T08:00:00Z",
371
+ "lastUsed": "2026-01-14T12:05:00Z",
372
+ "lastError": null,
373
+ "totalInvocations": 47,
374
+ "successRate": 0.957,
375
+ "avgDurationMs": 1234
376
+ }
377
+ ```
378
+
379
+ ### 4.3 Usage Log (`usage.log`)
380
+
381
+ **Format:** JSON Lines (append-only)
382
+
383
+ ```typescript
384
+ type UsageLogEntry = {
385
+ ts: string; // ISO timestamp
386
+ type: "tool" | "script" | "prompt";
387
+ args?: string[]; // Command arguments (for tools/scripts)
388
+ exit?: number; // Exit code
389
+ ms: number; // Duration in milliseconds
390
+ error?: string; // Error message (truncated to 200 chars)
391
+ tool?: string; // Tool binary that was invoked
392
+ };
393
+ ```
394
+
395
+ **Example:**
396
+ ```json
397
+ {"ts":"2026-01-14T12:05:00Z","type":"tool","args":["gmail","messages","list","--limit","5"],"exit":0,"ms":1234,"tool":"gog"}
398
+ {"ts":"2026-01-14T12:10:00Z","type":"tool","args":["calendar","events"],"exit":1,"ms":500,"error":"rate limit exceeded","tool":"gog"}
399
+ {"ts":"2026-01-14T12:15:00Z","type":"prompt","ms":5}
400
+ ```
401
+
402
+ **Log Rotation:**
403
+ - Keep last 5,000 entries OR 2MB, whichever is smaller
404
+ - Prune on write if size exceeds threshold
405
+ - Keep most recent entries
406
+
407
+ ---
408
+
409
+ ## 5. Skill Discovery & Indexing
410
+
411
+ ### 5.1 Discovery Sources
412
+
413
+ Skills are loaded from multiple sources with precedence:
414
+
415
+ ```
416
+ Source Priority (lowest to highest):
417
+ 1. extra dirs - config.skills.load.extraDirs
418
+ 2. bundled - nexus-core/skills/
419
+ 3. managed - ~/.nexus/skills/ or MANAGED_SKILLS_DIR
420
+ 4. workspace - ~/nexus/skills/
421
+ ```
422
+
423
+ Higher precedence sources override lower ones (by skill name).
424
+
425
+ ### 5.2 Manifest (`manifest.json`)
426
+
427
+ The manifest is a cache of discovered skills for fast lookup:
428
+
429
+ ```typescript
430
+ type SkillsManifest = {
431
+ version: 1;
432
+ generatedAt: string; // ISO timestamp
433
+ skills: Record<string, ManifestEntry>;
434
+ };
435
+
436
+ type ManifestEntry = {
437
+ name: string;
438
+ description: string;
439
+ source: "nexus-bundled" | "nexus-managed" | "nexus-workspace" | "nexus-extra";
440
+ filePath: string; // Absolute path to SKILL.md
441
+
442
+ // From nexus metadata
443
+ emoji?: string;
444
+ os?: string[];
445
+ requires?: {
446
+ bins?: string[];
447
+ anyBins?: string[];
448
+ env?: string[];
449
+ config?: string[];
450
+ };
451
+ type?: "tool" | "script" | "prompt";
452
+ tool?: string; // For tool-backed skills
453
+
454
+ // Install info
455
+ hasInstall?: boolean;
456
+ };
457
+ ```
458
+
459
+ **Regeneration:**
460
+ - On `nexus skills refresh`
461
+ - On first run after nexus update
462
+ - When skill folder mtime changes
463
+
464
+ ### 5.3 Filtering
465
+
466
+ At runtime, skills are filtered before presentation:
467
+
468
+ ```typescript
469
+ function shouldIncludeSkill(skill: ManifestEntry, config: NexusConfig): boolean {
470
+ // 1. Check explicit disable in config
471
+ if (config.skills.entries[skill.name]?.enabled === false) return false;
472
+
473
+ // 2. Check OS compatibility
474
+ if (skill.os?.length && !skill.os.includes(process.platform)) return false;
475
+
476
+ // 3. Check bundled allowlist
477
+ if (skill.source === "nexus-bundled" && config.skills.allowBundled) {
478
+ if (!config.skills.allowBundled.includes(skill.name)) return false;
479
+ }
480
+
481
+ // 4. Skip binary/env checks for "always" skills
482
+ if (skill.always) return true;
483
+
484
+ // 5. Check required bins
485
+ if (skill.requires?.bins?.some(bin => !hasBinary(bin))) return false;
486
+
487
+ // 6. Check anyBins (at least one)
488
+ if (skill.requires?.anyBins?.length) {
489
+ if (!skill.requires.anyBins.some(bin => hasBinary(bin))) return false;
490
+ }
491
+
492
+ // 7. Check required env vars
493
+ for (const env of skill.requires?.env ?? []) {
494
+ if (!process.env[env] && !config.skills.entries[skill.name]?.apiKey) {
495
+ return false;
496
+ }
497
+ }
498
+
499
+ // 8. Check required config paths
500
+ for (const path of skill.requires?.config ?? []) {
501
+ if (!isConfigPathTruthy(config, path)) return false;
502
+ }
503
+
504
+ return true;
505
+ }
506
+ ```
507
+
508
+ ### 5.4 Listing Categories
509
+
510
+ When presenting skills, they should be grouped:
511
+
512
+ ```
513
+ ✅ READY (configured, working)
514
+ - Skills where state.configured === true
515
+
516
+ ⚠️ NEEDS SETUP (requires configuration)
517
+ - Tool exists but verification failed
518
+ - Missing env vars / API keys
519
+ - OAuth not completed
520
+
521
+ ⏳ NOT INSTALLED (binary missing)
522
+ - Required binary not in PATH
523
+ - Has install instructions
524
+
525
+ 💤 DISABLED (explicitly disabled)
526
+ - config.skills.entries[name].enabled === false
527
+ ```
528
+
529
+ ---
530
+
531
+ ## 6. CLI Integration
532
+
533
+ ### 6.1 Commands
534
+
535
+ ```bash
536
+ # Discovery
537
+ nexus skills list [--ready|--locked|--all] [--json]
538
+ nexus skills refresh
539
+
540
+ # Per-skill
541
+ nexus skill show <name> # Details + prompt
542
+ nexus skill verify <name> [--force] # Check configuration
543
+ nexus skill run <name> [-- args] # Execute via gateway
544
+ nexus skill stats [name] # Usage statistics
545
+ ```
546
+
547
+ ### 6.2 `nexus skill run` Flow
548
+
549
+ ```
550
+ 1. Load skill from manifest
551
+ → Not found? Error with suggestions
552
+
553
+ 2. Determine type (tool/script/prompt)
554
+ → prompt? Return prompt content, log, exit
555
+
556
+ 3. Check binary exists (for tool/script)
557
+ → Missing? Show install instructions, exit 1
558
+
559
+ 4. Check configured (first-run verification)
560
+ → Not configured? Run verify command
561
+ → Verify fails? Show setup instructions, exit 1
562
+ → Verify succeeds? Update state, continue
563
+
564
+ 5. Execute tool/script with args
565
+ → Capture stdout/stderr/exit code
566
+ → Track duration
567
+
568
+ 6. Log invocation to usage.log
569
+
570
+ 7. Update state.json
571
+ → lastUsed, totalInvocations, successRate
572
+
573
+ 8. Return output
574
+ → Print stdout/stderr
575
+ → Exit with tool's exit code
576
+ ```
577
+
578
+ ---
579
+
580
+ ## 7. Implementation Notes
581
+
582
+ ### 7.1 Current vs Planned State Location
583
+
584
+ **Current implementation:**
585
+ - `~/nexus/state/skill-state.json` — single file with all skills
586
+ - `~/nexus/state/skill-usage.log` — single log file
587
+
588
+ **Planned (per STATE_ARCHITECTURE.md):**
589
+ - `~/nexus/state/nexus/skills/{skill}/state.json`
590
+ - `~/nexus/state/nexus/skills/{skill}/usage.log`
591
+
592
+ **Migration needed:** The existing `skill-state.ts` and `skill-usage.ts` need updating to use per-skill folders.
593
+
594
+ ### 7.2 Static Mappings Location
595
+
596
+ Currently in `skill-tools.ts`:
597
+ - `KNOWN_SKILL_TOOLS` — hardcoded tool configs
598
+ - `SCRIPT_SKILLS` — hardcoded script configs
599
+ - `PROMPT_ONLY_SKILLS` — hardcoded set
600
+
601
+ **Future improvement:** Move these into SKILL.md frontmatter or per-skill config, so skills are fully self-describing. For now, the static mappings work and can be extended.
602
+
603
+ ### 7.3 Adding a New Skill
604
+
605
+ 1. Create `skills/{name}/SKILL.md` with frontmatter
606
+ 2. Add to `KNOWN_SKILL_TOOLS`, `SCRIPT_SKILLS`, or `PROMPT_ONLY_SKILLS` in `skill-tools.ts`
607
+ 3. Run `nexus skills refresh` to update manifest
608
+ 4. Run `nexus skill verify {name}` to test
609
+
610
+ ---
611
+
612
+ ## 8. Complete SKILL.md Examples
613
+
614
+ ### 8.1 Tool-Backed (gog)
615
+
616
+ ```yaml
617
+ ---
618
+ name: gog
619
+ description: Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, People, and Tasks.
620
+ homepage: https://gogcli.sh
621
+ metadata: {"nexus":{"emoji":"📧","requires":{"bins":["gog"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/gogcli","bins":["gog"],"label":"Install gog (brew)"}]}}
622
+ ---
623
+
624
+ # gog
625
+
626
+ Google Workspace CLI. Requires OAuth setup (see `docs/setup.md`).
627
+
628
+ ## Quick Start
629
+
630
+ ```bash
631
+ gog gmail search "is:unread" --max 10
632
+ gog calendar events --json
633
+ ```
634
+
635
+ ...
636
+ ```
637
+
638
+ ### 8.2 Script-Backed (brave-search)
639
+
640
+ ```yaml
641
+ ---
642
+ name: brave-search
643
+ description: Web search and content extraction via Brave Search API.
644
+ homepage: https://brave.com/search/api
645
+ metadata: {"nexus":{"emoji":"🦁","requires":{"bins":["node"],"env":["BRAVE_API_KEY"]},"primaryEnv":"BRAVE_API_KEY"}}
646
+ ---
647
+
648
+ # Brave Search
649
+
650
+ ```bash
651
+ node {baseDir}/scripts/search.mjs "query" --content
652
+ ```
653
+
654
+ ...
655
+ ```
656
+
657
+ ### 8.3 Pure Prompt (filesystem)
658
+
659
+ ```yaml
660
+ ---
661
+ name: filesystem
662
+ description: Scan, analyze, and organize your filesystem.
663
+ metadata: {"nexus":{"emoji":"📁","bundled":true,"priority":"high","os":["darwin","linux"]}}
664
+ ---
665
+
666
+ # Filesystem Organization Skill
667
+
668
+ Analyze and organize the user's home directory with safety-first principles.
669
+
670
+ ## Safety Rules
671
+
672
+ 1. **Never delete without explicit approval**
673
+ 2. **Dry run by default**
674
+ ...
675
+ ```
676
+
677
+ ---
678
+
679
+ ## 9. Advanced Concepts (Future)
680
+
681
+ ### 9.1 Abstract vs Concrete Dependencies
682
+
683
+ Skills can declare abstract dependencies for portability:
684
+
685
+ ```yaml
686
+ # Concrete (current approach)
687
+ requires:
688
+ tools: [gog]
689
+ connectors: [google]
690
+
691
+ # Abstract (future approach)
692
+ requires:
693
+ capabilities:
694
+ - email_sender # gog, outlook, sendgrid could satisfy
695
+ - calendar_read # gog, apple-calendar could satisfy
696
+ ```
697
+
698
+ Connectors and tools would implement interfaces:
699
+
700
+ ```yaml
701
+ # In gog's SKILL.md
702
+ implements:
703
+ - email_sender
704
+ - email_reader
705
+ - calendar_read
706
+ - calendar_write
707
+ - drive_access
708
+ ```
709
+
710
+ **Benefit:** User can swap implementations. "I need email" doesn't mean "I need Google."
711
+
712
+ **Status:** Deferred. For now, use concrete dependencies.
713
+
714
+ ### 9.2 Skill Crystallization (Dex Pattern)
715
+
716
+ For repeated tasks, skills can be **crystallized** into deterministic scripts:
717
+
718
+ ```
719
+ ┌─────────────────────────────────────────────────────────────────┐
720
+ │ EXPLORATION (uses LLM) │
721
+ │ Agent figures out how to accomplish task │
722
+ │ Records every command, request, response │
723
+ └─────────────────────────────────────────────────────────────────┘
724
+
725
+ ┌─────────────────────────────────────────────────────────────────┐
726
+ │ CRYSTALLIZATION │
727
+ │ Extract successful path as shell script │
728
+ │ Templatize personal info as variables │
729
+ │ Build dependency graph │
730
+ └─────────────────────────────────────────────────────────────────┘
731
+
732
+ ┌─────────────────────────────────────────────────────────────────┐
733
+ │ EXPLOITATION (no LLM needed) │
734
+ │ Run crystallized script directly │
735
+ │ Massive cost savings for repeated tasks │
736
+ └─────────────────────────────────────────────────────────────────┘
737
+ ```
738
+
739
+ **State extension for crystallized skills:**
740
+
741
+ ```typescript
742
+ type SkillState = {
743
+ // ... existing fields ...
744
+
745
+ // Crystallization (future)
746
+ crystallized?: {
747
+ scriptPath: string; // Path to shell script
748
+ crystallizedAt: string; // When crystallized
749
+ variables: string[]; // Required variables
750
+ fingerprint: string; // Hash of tool outputs for validation
751
+ degraded?: boolean; // True if errors detected
752
+ };
753
+ };
754
+ ```
755
+
756
+ **Adaptive forgetting:** If a crystallized skill starts failing (fingerprint mismatch, error spike), mark it as `degraded` and fall back to LLM exploration.
757
+
758
+ **Status:** Deferred. Focus on core skill system first.
759
+
760
+ ### 9.3 Fingerprinting / Verification
761
+
762
+ Each tool's verify command produces output. Hash this for fingerprinting:
763
+
764
+ ```typescript
765
+ type SkillState = {
766
+ // ... existing fields ...
767
+
768
+ // Fingerprinting (future)
769
+ fingerprint?: {
770
+ verifyOutputHash: string; // SHA256 of verify command output
771
+ capturedAt: string; // When fingerprint taken
772
+ };
773
+ };
774
+ ```
775
+
776
+ **Uses:**
777
+ - Detect when underlying API changes (new version, deprecated fields)
778
+ - Security: detect if MCP server has been swapped/compromised
779
+ - Trigger re-verification when fingerprint mismatches
780
+
781
+ **Status:** Deferred. Consider for security-sensitive deployments.
782
+
783
+ ### 9.4 Variable Templatization
784
+
785
+ For shareable skills, personal info should be parameterized:
786
+
787
+ ```bash
788
+ # Hard-coded (not shareable)
789
+ gog gmail search "from:mom@gmail.com"
790
+
791
+ # Templatized (shareable)
792
+ gog gmail search "from:${CONTACT_MOM_EMAIL}"
793
+ ```
794
+
795
+ Skills would declare required variables:
796
+
797
+ ```yaml
798
+ metadata:
799
+ nexus:
800
+ variables:
801
+ - name: CONTACT_MOM_EMAIL
802
+ description: "Email address of your mom"
803
+ type: string
804
+ ```
805
+
806
+ **Status:** Deferred. For now, skills are templates that agents fill in contextually.
807
+
808
+ ### 9.5 Observability / Analytics Extension
809
+
810
+ Extended usage log for training data:
811
+
812
+ ```typescript
813
+ type UsageLogEntry = {
814
+ // ... existing fields ...
815
+
816
+ // Extended (future)
817
+ model?: string; // Which model was used
818
+ modelVersion?: string; // Model version
819
+ promptTokens?: number; // Input tokens
820
+ completionTokens?: number; // Output tokens
821
+ temperature?: number; // Model temperature
822
+
823
+ // For crystallization
824
+ sessionId?: string; // Group related calls
825
+ parentCall?: number; // For dependency tracking
826
+ };
827
+ ```
828
+
829
+ **Uses:**
830
+ - "Which model does best for Gmail operations?"
831
+ - Training data for fine-tuning
832
+ - Cost attribution per skill
833
+
834
+ **Status:** Deferred. Consider for enterprise analytics.
835
+
836
+ ---
837
+
838
+ ## 10. Open Questions Resolved
839
+
840
+ | Question | Decision |
841
+ |----------|----------|
842
+ | Single file vs per-skill folders? | **Per-skill folders** — better isolation, git-friendly |
843
+ | Where does tool/verify config live? | **skill-tools.ts** for now, migrate to SKILL.md later |
844
+ | How to handle unknown skills? | Return prompt content with warning, log as unknown |
845
+ | Should we track args in logs? | **Yes** — full args, user controls their own logs |
846
+ | Log rotation? | 5,000 entries or 2MB, prune oldest |
847
+ | Skills vs Tools vs Connectors? | **Three layers** — skills are prompts, tools have state, connectors are auth |
848
+ | Abstract dependencies? | **Deferred** — use concrete for now, add interfaces later |
849
+ | Skill crystallization? | **Deferred** — interesting optimization for repeated tasks |
850
+
851
+ ### 9.6 Resources / Context Bundles
852
+
853
+ Skills can include supporting resources:
854
+
855
+ ```
856
+ skills/gog/
857
+ ├── SKILL.md # Main prompt
858
+ ├── docs/
859
+ │ ├── setup.md # Setup guide
860
+ │ └── portability.md # Moving to new machine
861
+ ├── references/
862
+ │ ├── oauth-flow.md # OAuth documentation
863
+ │ └── api-limits.md # Rate limits info
864
+ └── examples/
865
+ ├── search-queries.md # Example queries
866
+ └── calendar-sync.md # Calendar sync patterns
867
+ ```
868
+
869
+ Resources are bundled with skills when distributed. The SKILL.md can reference them:
870
+
871
+ ```markdown
872
+ ## Setup
873
+ See `docs/setup.md` for initial configuration.
874
+
875
+ ## References
876
+ - OAuth flow: `references/oauth-flow.md`
877
+ - API limits: `references/api-limits.md`
878
+ ```
879
+
880
+ **Status:** Already supported. Skills can include any supporting files.
881
+
882
+ ---
883
+
884
+ ## 11. Summary
885
+
886
+ ### File Locations
887
+
888
+ | Component | Location |
889
+ |-----------|----------|
890
+ | Skill definition | `~/nexus/skills/{name}/SKILL.md` |
891
+ | Skill resources | `~/nexus/skills/{name}/docs/`, `references/`, etc. |
892
+ | Skill state | `~/nexus/state/nexus/skills/{name}/state.json` |
893
+ | Skill usage log | `~/nexus/state/nexus/skills/{name}/usage.log` |
894
+ | Skills manifest | `~/nexus/state/nexus/skills/manifest.json` |
895
+ | Static tool mappings | `nexus-core/src/agents/skill-tools.ts` |
896
+ | Core loader | `nexus-core/src/agents/skills.ts` |
897
+ | State management | `nexus-core/src/agents/skill-state.ts` |
898
+ | Usage tracking | `nexus-core/src/agents/skill-usage.ts` |
899
+ | Gateway runner | `nexus-core/src/agents/skill-runner.ts` |
900
+
901
+ ### Conceptual Model
902
+
903
+ ```
904
+ ┌─────────────────────────────────────────────────────────────────┐
905
+ │ SKILL ECOSYSTEM │
906
+ ├─────────────────────────────────────────────────────────────────┤
907
+ │ │
908
+ │ SKILL (.md) TOOL (binary) CONNECTOR (auth) │
909
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
910
+ │ │ Prompt │ ──→ │ gog, eve, │ ──→ │ Google OAuth│ │
911
+ │ │ Stateless │ │ tmux, etc. │ │ Credentials │ │
912
+ │ │ Distributable│ │ Stateful │ │ Stateless │ │
913
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
914
+ │ │
915
+ │ Types: Types: Lives in: │
916
+ │ • Pure prompt • CLI binary credentials/ │
917
+ │ • Tool-backed • Script │
918
+ │ • Script-backed • Native tool │
919
+ │ • Connector-backed │
920
+ │ │
921
+ └─────────────────────────────────────────────────────────────────┘
922
+ ```
923
+
924
+ ### Key Decisions
925
+
926
+ | Decision | Rationale |
927
+ |----------|-----------|
928
+ | **Per-skill state folders** | Isolation, git-friendly, extensible |
929
+ | **Three conceptual layers** | Skills (prompts), Tools (binaries), Connectors (auth) |
930
+ | **Skills are stateless** | Runtime state tracks execution, not skill data |
931
+ | **Static mappings** in code | Simple now, migrate to SKILL.md frontmatter later |
932
+ | **Gateway pattern** | All execution via `nexus skill run` for observability |
933
+ | **Automatic logging** | No agent reporting required, capture everything |
934
+ | **Deferred: abstract deps** | Use concrete dependencies now, add interfaces later |
935
+ | **Deferred: crystallization** | Interesting optimization for repeated workflows |
936
+
937
+ ### Future Directions
938
+
939
+ 1. **Abstract interfaces** — Skills declare "need email" not "need gog"
940
+ 2. **Skill crystallization** — Compile successful workflows to scripts
941
+ 3. **Fingerprinting** — Detect API changes and compromised tools
942
+ 4. **Variable templatization** — Shareable skills with parameterized personal info
943
+ 5. **Extended analytics** — Model performance tracking, training data export
944
+
945
+ ---
946
+
947
+ *This document is the authoritative specification for the Nexus skill system.*