@intent-systems/nexus 2026.1.5-4 → 2026.1.5-8

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 (347) hide show
  1. package/dist/agents/agent-id.js +41 -0
  2. package/dist/agents/auth-profiles.js +114 -25
  3. package/dist/agents/identity-state.js +101 -0
  4. package/dist/agents/model-auth.js +1 -0
  5. package/dist/agents/model-fallback.js +15 -9
  6. package/dist/agents/model-selection.js +1 -1
  7. package/dist/agents/models-config.js +17 -11
  8. package/dist/agents/pi-embedded-runner.js +101 -9
  9. package/dist/agents/sandbox.js +12 -3
  10. package/dist/agents/skill-runner.js +41 -6
  11. package/dist/agents/skill-usage.js +117 -17
  12. package/dist/agents/skills-status.js +4 -3
  13. package/dist/agents/skills.js +38 -30
  14. package/dist/agents/subagent-registry.js +25 -11
  15. package/dist/agents/system-prompt.js +16 -0
  16. package/dist/agents/tool-policy.js +19 -3
  17. package/dist/agents/tools/browser-tool.js +5 -2
  18. package/dist/agents/tools/image-tool.js +93 -8
  19. package/dist/agents/tools/sessions-announce-target.js +5 -1
  20. package/dist/agents/workspace.js +81 -59
  21. package/dist/auto-reply/command-detection.js +2 -1
  22. package/dist/auto-reply/reply/directive-handling.js +153 -28
  23. package/dist/auto-reply/reply/directives.js +17 -2
  24. package/dist/auto-reply/reply/model-selection.js +8 -3
  25. package/dist/auto-reply/reply/queue.js +2 -2
  26. package/dist/auto-reply/reply.js +1 -1
  27. package/dist/auto-reply/thinking.js +15 -0
  28. package/dist/browser/chrome.js +1 -1
  29. package/dist/browser/client.js +2 -0
  30. package/dist/browser/config.js +6 -2
  31. package/dist/browser/pw-tools-core.js +3 -0
  32. package/dist/browser/routes/agent.js +14 -0
  33. package/dist/canvas-host/server.js +1 -1
  34. package/dist/capabilities/detector.js +46 -15
  35. package/dist/capabilities/registry.js +2 -1
  36. package/dist/cli/cloud-cli.js +70 -7
  37. package/dist/cli/credential-cli.js +214 -23
  38. package/dist/cli/gateway-cli.js +1 -1
  39. package/dist/cli/log-cli.js +25 -0
  40. package/dist/cli/pairing-cli.js +1 -1
  41. package/dist/cli/program.js +82 -8
  42. package/dist/cli/run-main.js +1 -1
  43. package/dist/cli/skills-cli.js +165 -30
  44. package/dist/cli/skills-hub-cli.js +68 -36
  45. package/dist/cli/tool-connector-cli.js +99 -24
  46. package/dist/cli/upstream-sync-cli.js +253 -96
  47. package/dist/cli/usage-cli.js +14 -0
  48. package/dist/commands/auth-choice-options.js +6 -1
  49. package/dist/commands/auth-choice.js +157 -5
  50. package/dist/commands/bootstrap-preset.js +26 -12
  51. package/dist/commands/capabilities.js +33 -6
  52. package/dist/commands/claude-md.js +3 -2
  53. package/dist/commands/config-view.js +1 -1
  54. package/dist/commands/config.js +85 -0
  55. package/dist/commands/configure.js +4 -4
  56. package/dist/commands/credential.js +497 -36
  57. package/dist/commands/cursor-hooks.js +240 -0
  58. package/dist/commands/cursor-rules.js +14 -188
  59. package/dist/commands/doctor.js +5 -4
  60. package/dist/commands/identity.js +29 -32
  61. package/dist/commands/init.js +304 -20
  62. package/dist/commands/log.js +134 -0
  63. package/dist/commands/models/fallbacks.js +1 -1
  64. package/dist/commands/models/image-fallbacks.js +1 -1
  65. package/dist/commands/models/list.js +1 -1
  66. package/dist/commands/models/scan.js +1 -1
  67. package/dist/commands/onboard-auth.js +27 -2
  68. package/dist/commands/onboard-eve-identity.js +8 -9
  69. package/dist/commands/onboard-non-interactive.js +4 -2
  70. package/dist/commands/onboard-quickstart.js +18 -11
  71. package/dist/commands/quest-state.js +271 -0
  72. package/dist/commands/quest.js +53 -13
  73. package/dist/commands/reset.js +1 -1
  74. package/dist/commands/sessions-ingest.js +5 -4
  75. package/dist/commands/setup.js +4 -2
  76. package/dist/commands/skills-manifest.js +89 -29
  77. package/dist/commands/status.js +193 -73
  78. package/dist/commands/suggestions.js +1 -1
  79. package/dist/commands/usage-tracking.js +32 -0
  80. package/dist/commands/usage-upload.js +6 -1
  81. package/dist/config/defaults.js +1 -3
  82. package/dist/config/includes.js +5 -7
  83. package/dist/config/io.js +88 -16
  84. package/dist/config/legacy.js +4 -2
  85. package/dist/config/paths.js +16 -0
  86. package/dist/config/sessions.js +9 -5
  87. package/dist/config/zod-schema.js +4 -3
  88. package/dist/control-plane/broker/broker.js +131 -78
  89. package/dist/control-plane/compaction.js +3 -5
  90. package/dist/control-plane/factory.js +2 -2
  91. package/dist/control-plane/index.js +2 -2
  92. package/dist/control-plane/odu/agents.js +28 -23
  93. package/dist/control-plane/odu/interaction-tools.js +62 -50
  94. package/dist/control-plane/odu/prompt-loader.js +8 -8
  95. package/dist/control-plane/odu/runtime.js +87 -75
  96. package/dist/control-plane/odu-control-plane.js +14 -12
  97. package/dist/control-plane/single-agent.js +13 -13
  98. package/dist/credentials/store.js +133 -7
  99. package/dist/daemon/launchd.js +14 -0
  100. package/dist/entry.js +0 -0
  101. package/dist/gateway/server-browser.js +5 -4
  102. package/dist/gateway/server-methods/cron.js +11 -1
  103. package/dist/gateway/server.js +14 -7
  104. package/dist/infra/bonjour.js +1 -1
  105. package/dist/infra/event-log.js +8 -2
  106. package/dist/infra/path-env.js +1 -2
  107. package/dist/infra/provider-usage.auth.js +5 -3
  108. package/dist/infra/provider-usage.fetch.claude.js +16 -6
  109. package/dist/infra/provider-usage.fetch.minimax.js +8 -3
  110. package/dist/infra/provider-usage.js +9 -5
  111. package/dist/infra/restart.js +2 -2
  112. package/dist/infra/usage-settings.js +78 -0
  113. package/dist/infra/usage-suggestions.js +17 -5
  114. package/dist/infra/usage-upload.js +38 -1
  115. package/dist/infra/voicewake.js +2 -2
  116. package/dist/media/image-ops.js +3 -1
  117. package/dist/memory/index.js +2 -381
  118. package/dist/native/nexus-cloud/darwin-arm64/nexus-cloud +0 -0
  119. package/dist/native/nexus-cloud/darwin-arm64/nexus-cloud-rs +0 -0
  120. package/dist/pairing/pairing-store.js +24 -0
  121. package/dist/providers/github-copilot-auth.js +1 -1
  122. package/dist/routing/resolve-route.js +6 -6
  123. package/dist/routing/session-key.js +3 -1
  124. package/dist/sessions/send-policy.js +5 -5
  125. package/dist/slack/monitor.js +22 -1
  126. package/dist/telegram/reaction-level.js +2 -1
  127. package/dist/utils.js +8 -3
  128. package/dist/wizard/onboarding.js +29 -7
  129. package/docs/AGENTS.default.md +1 -1
  130. package/docs/configuration.md +1 -1
  131. package/docs/feature-inventory/overview.md +2 -2
  132. package/docs/reference/templates/AGENTS.md +172 -109
  133. package/docs/templates/AGENTS.md +140 -199
  134. package/docs/templates/BOOTSTRAP.md +40 -20
  135. package/docs/templates/IDENTITY.md +6 -0
  136. package/docs/templates/USER.md +22 -2
  137. package/package.json +3 -1
  138. package/skills/{notion → connectors/notion}/SKILL.md +1 -1
  139. package/skills/{filesystem → guides/filesystem}/SKILL.md +1 -1
  140. package/skills/{onboarding → guides/onboarding}/SKILL.md +1 -1
  141. package/skills/{onboarding → guides/onboarding}/docs/CAPABILITY_TAXONOMY.md +5 -5
  142. package/skills/{onboarding → guides/onboarding}/docs/CLI_GRAMMAR.md +8 -8
  143. package/skills/{onboarding → guides/onboarding}/docs/CLI_GRAMMAR_ONBOARDING.md +2 -2
  144. package/skills/{onboarding → guides/onboarding}/docs/CLI_GRAMMAR_SKILLS.md +26 -20
  145. package/skills/{onboarding → guides/onboarding}/docs/GOAL_STATE_ARCHITECTURE.md +38 -43
  146. package/skills/{onboarding → guides/onboarding}/docs/NEXUS_SYSTEM_OVERVIEW.md +4 -4
  147. package/skills/{onboarding → guides/onboarding}/docs/SKILLS_HUB_SPEC.md +1 -1
  148. package/skills/{onboarding → guides/onboarding}/docs/SKILLS_SPECIFICATION.md +8 -7
  149. package/skills/{onboarding → guides/onboarding}/docs/SKILL_GATEWAY_DESIGN.md +16 -16
  150. package/skills/{onboarding → guides/onboarding}/docs/SKILL_GATEWAY_PRD.md +10 -12
  151. package/skills/guides/onboarding/docs/canonical/00_CONFLICT_ANALYSIS.md +463 -0
  152. package/skills/guides/onboarding/docs/canonical/01_NEXUS_OVERVIEW.md +167 -0
  153. package/skills/guides/onboarding/docs/canonical/02_CLI_REFERENCE.md +404 -0
  154. package/skills/guides/onboarding/docs/canonical/03_STATE_ARCHITECTURE.md +357 -0
  155. package/skills/guides/onboarding/docs/canonical/04_SKILL_SPECIFICATION.md +393 -0
  156. package/skills/guides/onboarding/docs/canonical/05_CAPABILITY_TAXONOMY.md +298 -0
  157. package/skills/guides/onboarding/docs/canonical/06_CAPABILITIES_REFERENCE.md +207 -0
  158. package/skills/guides/onboarding/docs/canonical/07_AGENT_BINDINGS.md +85 -0
  159. package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/nexus-cloud.md +2 -2
  160. package/skills/{onboarding → guides/onboarding}/scripts/ralph/progress.txt +1 -1
  161. package/skills/{nexus-cloud → tools/nexus-cloud}/SKILL.md +2 -1
  162. package/skills/{nexus-cloud → tools/nexus-cloud}/docs/setup.md +1 -1
  163. package/docs/templates/PROFILE.md +0 -14
  164. /package/skills/{brave-search → connectors/brave-search}/SKILL.md +0 -0
  165. /package/skills/{brave-search → connectors/brave-search}/docs/setup.md +0 -0
  166. /package/skills/{brave-search → connectors/brave-search}/docs/troubleshooting.md +0 -0
  167. /package/skills/{brave-search → connectors/brave-search}/docs/usage.md +0 -0
  168. /package/skills/{brave-search → connectors/brave-search}/scripts/content.mjs +0 -0
  169. /package/skills/{brave-search → connectors/brave-search}/scripts/search.mjs +0 -0
  170. /package/skills/{discord → connectors/discord}/SKILL.md +0 -0
  171. /package/skills/{gemini → connectors/gemini}/SKILL.md +0 -0
  172. /package/skills/{github → connectors/github}/SKILL.md +0 -0
  173. /package/skills/{github → connectors/github}/docs/setup.md +0 -0
  174. /package/skills/{github → connectors/github}/docs/troubleshooting.md +0 -0
  175. /package/skills/{google-oauth → connectors/google-oauth}/SKILL.md +0 -0
  176. /package/skills/{slack → connectors/slack}/SKILL.md +0 -0
  177. /package/skills/{telegram → connectors/telegram}/SKILL.md +0 -0
  178. /package/skills/{telegram → connectors/telegram}/docs/pairing.md +0 -0
  179. /package/skills/{telegram → connectors/telegram}/docs/setup.md +0 -0
  180. /package/skills/{telegram → connectors/telegram}/docs/webhook.md +0 -0
  181. /package/skills/{wacli → connectors/wacli}/SKILL.md +0 -0
  182. /package/skills/{wacli → connectors/wacli}/docs/auth.md +0 -0
  183. /package/skills/{wacli → connectors/wacli}/docs/backup.md +0 -0
  184. /package/skills/{wacli → connectors/wacli}/docs/troubleshooting.md +0 -0
  185. /package/skills/{browser-use-agent-sdk → guides/browser-use-agent-sdk}/SKILL.md +0 -0
  186. /package/skills/{json-render → guides/json-render}/SKILL.md +0 -0
  187. /package/skills/{json-render → guides/json-render}/assets/components/README.md +0 -0
  188. /package/skills/{json-render → guides/json-render}/assets/components/catalog.ts +0 -0
  189. /package/skills/{json-render → guides/json-render}/assets/components/registry.tsx +0 -0
  190. /package/skills/{json-render → guides/json-render}/assets/demo/App.css +0 -0
  191. /package/skills/{json-render → guides/json-render}/assets/demo/App.tsx +0 -0
  192. /package/skills/{json-render → guides/json-render}/assets/demo/README.md +0 -0
  193. /package/skills/{json-render → guides/json-render}/assets/demo/catalog.ts +0 -0
  194. /package/skills/{json-render → guides/json-render}/assets/demo/data/nexus-core.json +0 -0
  195. /package/skills/{json-render → guides/json-render}/assets/demo/index.css +0 -0
  196. /package/skills/{json-render → guides/json-render}/assets/demo/registry.tsx +0 -0
  197. /package/skills/{json-render → guides/json-render}/docs/nexus-state-demo.md +0 -0
  198. /package/skills/{json-render → guides/json-render}/docs/shadcn-preset.md +0 -0
  199. /package/skills/{json-render → guides/json-render}/scripts/create-vite-demo.sh +0 -0
  200. /package/skills/{json-render → guides/json-render}/scripts/llm-server/README.md +0 -0
  201. /package/skills/{json-render → guides/json-render}/scripts/llm-server/catalog.ts +0 -0
  202. /package/skills/{json-render → guides/json-render}/scripts/llm-server/package-lock.json +0 -0
  203. /package/skills/{json-render → guides/json-render}/scripts/llm-server/package.json +0 -0
  204. /package/skills/{json-render → guides/json-render}/scripts/llm-server/server.ts +0 -0
  205. /package/skills/{onboarding → guides/onboarding}/docs/CAPABILITIES.md +0 -0
  206. /package/skills/{onboarding → guides/onboarding}/docs/CLI_GRAMMAR_CREDENTIALS.md +0 -0
  207. /package/skills/{onboarding → guides/onboarding}/docs/DOCUMENTATION_OVERVIEW.md +0 -0
  208. /package/skills/{onboarding → guides/onboarding}/docs/ENTITY_MODEL.md +0 -0
  209. /package/skills/{onboarding → guides/onboarding}/docs/SKILL_INVENTORY.md +0 -0
  210. /package/skills/{onboarding → guides/onboarding}/docs/STATE_ARCHITECTURE.md +0 -0
  211. /package/skills/{onboarding → guides/onboarding}/docs/TROUBLESHOOTING.md +0 -0
  212. /package/skills/{onboarding → guides/onboarding}/docs/USER_JOURNEY.md +0 -0
  213. /package/skills/{onboarding → guides/onboarding}/docs/WOW_MOMENTS.md +0 -0
  214. /package/skills/{onboarding → guides/onboarding}/docs/agent-apple-id.md +0 -0
  215. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/1password.md +0 -0
  216. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/TEMPLATE.md +0 -0
  217. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/aix.md +0 -0
  218. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/bird.md +0 -0
  219. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/brave-search.md +0 -0
  220. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/comms.md +0 -0
  221. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/computer-use.md +0 -0
  222. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/cron-and-heartbeat.md +0 -0
  223. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/eve.md +0 -0
  224. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/github.md +0 -0
  225. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/gog.md +0 -0
  226. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/homebrew-prereqs.md +0 -0
  227. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/qmd.md +0 -0
  228. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/telegram.md +0 -0
  229. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/wacli.md +0 -0
  230. /package/skills/{onboarding → guides/onboarding}/docs/skill-deep-dives/weather.md +0 -0
  231. /package/skills/{onboarding → guides/onboarding}/scripts/ralph/prd.json +0 -0
  232. /package/skills/{onboarding → guides/onboarding}/scripts/ralph/prompt.md +0 -0
  233. /package/skills/{onboarding → guides/onboarding}/scripts/ralph/ralph.log +0 -0
  234. /package/skills/{onboarding → guides/onboarding}/scripts/ralph/ralph.sh +0 -0
  235. /package/skills/{onboarding → guides/onboarding}/scripts/setup-cursor-skills.sh +0 -0
  236. /package/skills/{1password → tools/1password}/SKILL.md +0 -0
  237. /package/skills/{1password → tools/1password}/docs/setup.md +0 -0
  238. /package/skills/{1password → tools/1password}/docs/troubleshooting.md +0 -0
  239. /package/skills/{1password → tools/1password}/references/cli-examples.md +0 -0
  240. /package/skills/{1password → tools/1password}/references/get-started.md +0 -0
  241. /package/skills/{agent-browser → tools/agent-browser}/SKILL.md +0 -0
  242. /package/skills/{agent-browser → tools/agent-browser}/docs/browser-use-eval.md +0 -0
  243. /package/skills/{agent-browser → tools/agent-browser}/docs/first-tests.md +0 -0
  244. /package/skills/{agent-browser → tools/agent-browser}/docs/wordle-nyt-eval.js +0 -0
  245. /package/skills/{aix → tools/aix}/SKILL.md +0 -0
  246. /package/skills/{aix → tools/aix}/docs/embeddings.md +0 -0
  247. /package/skills/{aix → tools/aix}/docs/setup.md +0 -0
  248. /package/skills/{aix → tools/aix}/docs/troubleshooting.md +0 -0
  249. /package/skills/{aix → tools/aix}/references/sql.md +0 -0
  250. /package/skills/{apple-notes → tools/apple-notes}/SKILL.md +0 -0
  251. /package/skills/{apple-reminders → tools/apple-reminders}/SKILL.md +0 -0
  252. /package/skills/{bear-notes → tools/bear-notes}/SKILL.md +0 -0
  253. /package/skills/{bird → tools/bird}/SKILL.md +0 -0
  254. /package/skills/{bird → tools/bird}/docs/auth.md +0 -0
  255. /package/skills/{bird → tools/bird}/docs/troubleshooting.md +0 -0
  256. /package/skills/{blogwatcher → tools/blogwatcher}/SKILL.md +0 -0
  257. /package/skills/{blucli → tools/blucli}/SKILL.md +0 -0
  258. /package/skills/{camsnap → tools/camsnap}/SKILL.md +0 -0
  259. /package/skills/{clawdhub → tools/clawdhub}/SKILL.md +0 -0
  260. /package/skills/{coding-agent → tools/coding-agent}/SKILL.md +0 -0
  261. /package/skills/{comms → tools/comms}/SKILL.md +0 -0
  262. /package/skills/{comms → tools/comms}/docs/adapters.md +0 -0
  263. /package/skills/{comms → tools/comms}/docs/setup.md +0 -0
  264. /package/skills/{comms → tools/comms}/docs/troubleshooting.md +0 -0
  265. /package/skills/{comms → tools/comms}/references/schema.md +0 -0
  266. /package/skills/{computer-use → tools/computer-use}/SKILL.md +0 -0
  267. /package/skills/{computer-use → tools/computer-use}/docs/open-interpreter.md +0 -0
  268. /package/skills/{computer-use → tools/computer-use}/docs/peekaboo.md +0 -0
  269. /package/skills/{computer-use → tools/computer-use}/docs/setup.md +0 -0
  270. /package/skills/{computer-use → tools/computer-use}/docs/troubleshooting.md +0 -0
  271. /package/skills/{eightctl → tools/eightctl}/SKILL.md +0 -0
  272. /package/skills/{eve → tools/eve}/SKILL.md +0 -0
  273. /package/skills/{eve → tools/eve}/docs/dual-account.md +0 -0
  274. /package/skills/{eve → tools/eve}/docs/intelligence.md +0 -0
  275. /package/skills/{eve → tools/eve}/docs/setup.md +0 -0
  276. /package/skills/{eve → tools/eve}/docs/troubleshooting.md +0 -0
  277. /package/skills/{eve → tools/eve}/scripts/setup-dual-account.sh +0 -0
  278. /package/skills/{food-order → tools/food-order}/SKILL.md +0 -0
  279. /package/skills/{gh → tools/gh}/SKILL.md +0 -0
  280. /package/skills/{gh → tools/gh}/docs/usage.md +0 -0
  281. /package/skills/{gifgrep → tools/gifgrep}/SKILL.md +0 -0
  282. /package/skills/{gog → tools/gog}/SKILL.md +0 -0
  283. /package/skills/{gog → tools/gog}/docs/portability.md +0 -0
  284. /package/skills/{gog → tools/gog}/docs/setup.md +0 -0
  285. /package/skills/{gog → tools/gog}/docs/troubleshooting.md +0 -0
  286. /package/skills/{gog → tools/gog}/scripts/cdp/README.md +0 -0
  287. /package/skills/{gog → tools/gog}/scripts/cdp/add_test_users.py +0 -0
  288. /package/skills/{gog → tools/gog}/scripts/cdp/auth_add_accounts.py +0 -0
  289. /package/skills/{gog → tools/gog}/scripts/cdp/auth_add_accounts_manual.py +0 -0
  290. /package/skills/{gog → tools/gog}/scripts/cdp/create_oauth_client.py +0 -0
  291. /package/skills/{gog → tools/gog}/scripts/cdp/launch_cdp_chrome.sh +0 -0
  292. /package/skills/{goplaces → tools/goplaces}/SKILL.md +0 -0
  293. /package/skills/{imsg → tools/imsg}/SKILL.md +0 -0
  294. /package/skills/{local-places → tools/local-places}/SERVER_README.md +0 -0
  295. /package/skills/{local-places → tools/local-places}/SKILL.md +0 -0
  296. /package/skills/{local-places → tools/local-places}/pyproject.toml +0 -0
  297. /package/skills/{local-places → tools/local-places}/src/local_places/__init__.py +0 -0
  298. /package/skills/{local-places → tools/local-places}/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  299. /package/skills/{local-places → tools/local-places}/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  300. /package/skills/{local-places → tools/local-places}/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  301. /package/skills/{local-places → tools/local-places}/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  302. /package/skills/{local-places → tools/local-places}/src/local_places/google_places.py +0 -0
  303. /package/skills/{local-places → tools/local-places}/src/local_places/main.py +0 -0
  304. /package/skills/{local-places → tools/local-places}/src/local_places/schemas.py +0 -0
  305. /package/skills/{mcporter → tools/mcporter}/SKILL.md +0 -0
  306. /package/skills/{model-usage → tools/model-usage}/SKILL.md +0 -0
  307. /package/skills/{model-usage → tools/model-usage}/references/codexbar-cli.md +0 -0
  308. /package/skills/{model-usage → tools/model-usage}/scripts/model_usage.py +0 -0
  309. /package/skills/{nano-banana-pro → tools/nano-banana-pro}/SKILL.md +0 -0
  310. /package/skills/{nano-banana-pro → tools/nano-banana-pro}/scripts/generate_image.py +0 -0
  311. /package/skills/{nano-pdf → tools/nano-pdf}/SKILL.md +0 -0
  312. /package/skills/{nexus-cloud → tools/nexus-cloud}/docs/security.md +0 -0
  313. /package/skills/{nexus-cloud → tools/nexus-cloud}/docs/troubleshooting.md +0 -0
  314. /package/skills/{obsidian → tools/obsidian}/SKILL.md +0 -0
  315. /package/skills/{openai-image-gen → tools/openai-image-gen}/SKILL.md +0 -0
  316. /package/skills/{openai-image-gen → tools/openai-image-gen}/scripts/gen.py +0 -0
  317. /package/skills/{openai-whisper → tools/openai-whisper}/SKILL.md +0 -0
  318. /package/skills/{openai-whisper-api → tools/openai-whisper-api}/SKILL.md +0 -0
  319. /package/skills/{openai-whisper-api → tools/openai-whisper-api}/scripts/transcribe.sh +0 -0
  320. /package/skills/{openhue → tools/openhue}/SKILL.md +0 -0
  321. /package/skills/{oracle → tools/oracle}/SKILL.md +0 -0
  322. /package/skills/{ordercli → tools/ordercli}/SKILL.md +0 -0
  323. /package/skills/{peekaboo → tools/peekaboo}/SKILL.md +0 -0
  324. /package/skills/{qmd → tools/qmd}/SKILL.md +0 -0
  325. /package/skills/{qmd → tools/qmd}/docs/mcp.md +0 -0
  326. /package/skills/{qmd → tools/qmd}/docs/ollama.md +0 -0
  327. /package/skills/{qmd → tools/qmd}/docs/setup.md +0 -0
  328. /package/skills/{sag → tools/sag}/SKILL.md +0 -0
  329. /package/skills/{skill-cli-template → tools/skill-cli-template}/SKILL.md +0 -0
  330. /package/skills/{songsee → tools/songsee}/SKILL.md +0 -0
  331. /package/skills/{sonoscli → tools/sonoscli}/SKILL.md +0 -0
  332. /package/skills/{spotify-player → tools/spotify-player}/SKILL.md +0 -0
  333. /package/skills/{summarize → tools/summarize}/SKILL.md +0 -0
  334. /package/skills/{things-mac → tools/things-mac}/SKILL.md +0 -0
  335. /package/skills/{tmux → tools/tmux}/SKILL.md +0 -0
  336. /package/skills/{tmux → tools/tmux}/scripts/find-sessions.sh +0 -0
  337. /package/skills/{tmux → tools/tmux}/scripts/wait-for-text.sh +0 -0
  338. /package/skills/{trello → tools/trello}/SKILL.md +0 -0
  339. /package/skills/{upstream-sync → tools/upstream-sync}/SKILL.md +0 -0
  340. /package/skills/{upstream-sync → tools/upstream-sync}/scripts/auto-port.sh +0 -0
  341. /package/skills/{upstream-sync → tools/upstream-sync}/scripts/check-all.sh +0 -0
  342. /package/skills/{upstream-sync → tools/upstream-sync}/scripts/check-nexus.sh +0 -0
  343. /package/skills/{upstream-sync → tools/upstream-sync}/scripts/check-pi-ai.sh +0 -0
  344. /package/skills/{video-frames → tools/video-frames}/SKILL.md +0 -0
  345. /package/skills/{video-frames → tools/video-frames}/scripts/frame.sh +0 -0
  346. /package/skills/{weather → tools/weather}/SKILL.md +0 -0
  347. /package/skills/{weather → tools/weather}/docs/usage.md +0 -0
@@ -4,7 +4,7 @@
4
4
  * Adapted from magic-toolbox for Nexus
5
5
  * Wraps Nexus pi-coding-agent session API
6
6
  */
7
- import { createSubsystemLogger } from '../../logging.js';
7
+ import { createSubsystemLogger } from "../../logging.js";
8
8
  /**
9
9
  * Base Interaction Agent
10
10
  *
@@ -26,26 +26,26 @@ export class InteractionAgent {
26
26
  isProcessing = false;
27
27
  isStreaming = false;
28
28
  shouldInterrupt = false;
29
- accumulatedResponse = '';
29
+ accumulatedResponse = "";
30
30
  constructor(config) {
31
31
  this.userId = config.userId;
32
- this.agentId = config.agentId || `${config.oduPath || 'nexus'}-ia`;
32
+ this.agentId = config.agentId || `${config.oduPath || "nexus"}-ia`;
33
33
  this.sessionId = config.sessionId || this.agentId;
34
- this.oduPath = config.oduPath || '~/nexus/home';
34
+ this.oduPath = config.oduPath || "~/nexus/home";
35
35
  this.config = config.config;
36
- this.model = config.model || 'claude-sonnet-4-5-20250929';
36
+ this.model = config.model || "claude-sonnet-4-5-20250929";
37
37
  this.maxTurns = config.maxTurns || 20;
38
38
  // Initialize ODU config (will be set by subclass)
39
39
  this.oduConfig = {
40
- name: 'nexus',
41
- purpose: 'Nexus Interaction Agent',
40
+ name: "nexus",
41
+ purpose: "Nexus Interaction Agent",
42
42
  };
43
43
  this.log = createSubsystemLogger(`odu/${this.agentId}`);
44
44
  }
45
45
  /**
46
46
  * Queue a message for processing
47
47
  */
48
- queueMessage(content, priority = 'normal', from) {
48
+ queueMessage(content, priority = "normal", from) {
49
49
  this.messageQueue.push({
50
50
  id: `msg-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
51
51
  content,
@@ -61,26 +61,26 @@ export class InteractionAgent {
61
61
  * Returns IMMEDIATE acknowledgment, then processes async in background
62
62
  */
63
63
  async processQueue() {
64
- this.log.info('processQueue() called', {
64
+ this.log.info("processQueue() called", {
65
65
  queueLength: this.messageQueue.length,
66
66
  isProcessing: this.isProcessing,
67
67
  });
68
68
  // If already processing, return early
69
69
  if (this.isProcessing) {
70
- return 'IA is currently processing another request';
70
+ return "IA is currently processing another request";
71
71
  }
72
72
  // If no messages queued, return early
73
73
  if (this.messageQueue.length === 0) {
74
- return 'No messages to process';
74
+ return "No messages to process";
75
75
  }
76
76
  // Peek at first message to generate acknowledgment
77
77
  const firstMessage = this.messageQueue[0];
78
78
  const ackMessage = firstMessage.from
79
79
  ? `Acknowledged request from ${firstMessage.from}. Processing now...`
80
- : 'Acknowledged. Processing...';
80
+ : "Acknowledged. Processing...";
81
81
  // Start processing in background (don't await!)
82
82
  this.processQueueAsync().catch((error) => {
83
- this.log.error('Background processing error', { error });
83
+ this.log.error("Background processing error", { error });
84
84
  });
85
85
  // Return acknowledgment immediately
86
86
  return ackMessage;
@@ -91,7 +91,7 @@ export class InteractionAgent {
91
91
  async processQueueAsync() {
92
92
  this.isProcessing = true;
93
93
  try {
94
- let finalResponse = '';
94
+ let finalResponse = "";
95
95
  // Process all queued messages
96
96
  while (this.messageQueue.length > 0) {
97
97
  // Dequeue all current messages
@@ -110,13 +110,15 @@ export class InteractionAgent {
110
110
  // Combine messages
111
111
  const combinedMessage = messages.length === 1
112
112
  ? messages[0].content
113
- : messages.map((m, i) => `Message ${i + 1}:\n${m.content}`).join('\n\n---\n\n');
113
+ : messages
114
+ .map((m, i) => `Message ${i + 1}:\n${m.content}`)
115
+ .join("\n\n---\n\n");
114
116
  // Reset interrupt flag
115
117
  this.shouldInterrupt = false;
116
118
  // Process the combined message with sender context
117
119
  finalResponse = await this.processSingleMessage(combinedMessage, from);
118
120
  }
119
- this.log.info('Async processing complete', {
121
+ this.log.info("Async processing complete", {
120
122
  responseLength: finalResponse.length,
121
123
  });
122
124
  }
@@ -130,7 +132,7 @@ export class InteractionAgent {
130
132
  */
131
133
  interrupt() {
132
134
  if (this.isStreaming) {
133
- this.log.info('Interrupting mid-stream', {
135
+ this.log.info("Interrupting mid-stream", {
134
136
  accumulatedLength: this.accumulatedResponse.length,
135
137
  });
136
138
  this.shouldInterrupt = true;
@@ -164,17 +166,20 @@ export class ExecutionAgent {
164
166
  constructor(config) {
165
167
  this.userId = config.userId;
166
168
  this.task = config.task;
167
- this.agentId = config.agentId || `${config.oduPath || 'nexus'}-ea-${this.task.taskName || 'task'}`;
168
- this.oduPath = config.oduPath || '~/nexus/home';
169
+ this.agentId =
170
+ config.agentId ||
171
+ `${config.oduPath || "nexus"}-ea-${this.task.taskName || "task"}`;
172
+ this.oduPath = config.oduPath || "~/nexus/home";
169
173
  this.config = config.config;
170
174
  // Support model override: task.model > config.model > default Haiku 4.5
171
- this.model = config.task.model || config.model || 'claude-haiku-4-5-20251001';
175
+ this.model =
176
+ config.task.model || config.model || "claude-haiku-4-5-20251001";
172
177
  this.maxTurns = config.maxTurns || 50;
173
178
  this.history = config.history || [];
174
179
  // Initialize ODU config (will be set by subclass)
175
180
  this.oduConfig = {
176
- name: 'nexus',
177
- purpose: 'Nexus Execution Agent',
181
+ name: "nexus",
182
+ purpose: "Nexus Execution Agent",
178
183
  };
179
184
  this.log = createSubsystemLogger(`odu/${this.agentId}`);
180
185
  }
@@ -182,6 +187,6 @@ export class ExecutionAgent {
182
187
  * Build initial prompt for the task
183
188
  */
184
189
  buildInitialPrompt() {
185
- return this.task.description || 'Complete the task';
190
+ return this.task.description || "Complete the task";
186
191
  }
187
192
  }
@@ -4,63 +4,63 @@
4
4
  * Creates tools for IAs to delegate to EAs and manage specialist agents.
5
5
  * Ported from magic-toolbox/agentkit/tools/interaction-tools.ts
6
6
  */
7
- import { listAgentSessions, loadSessionMetadata } from '../../config/sessions.js';
7
+ import { listAgentSessions, loadSessionMetadata, } from "../../config/sessions.js";
8
8
  /**
9
9
  * Create all interaction agent tools
10
10
  *
11
11
  * Returns tool definitions in the format expected by pi-coding-agent
12
12
  */
13
- export function createInteractionTools(context) {
13
+ export function createInteractionTools(_context) {
14
14
  return [
15
15
  {
16
- name: 'list_my_agents',
17
- description: 'List all agents you can message: your own specialist agents (by short name) and external agents that have contacted you (by full name).',
16
+ name: "list_my_agents",
17
+ description: "List all agents you can message: your own specialist agents (by short name) and external agents that have contacted you (by full name).",
18
18
  input_schema: {
19
- type: 'object',
19
+ type: "object",
20
20
  properties: {
21
21
  limit: {
22
- type: 'number',
23
- description: 'Maximum number of agents to return (default: 20)',
22
+ type: "number",
23
+ description: "Maximum number of agents to return (default: 20)",
24
24
  },
25
25
  },
26
26
  },
27
27
  },
28
28
  {
29
- name: 'send_message_to_agent',
29
+ name: "send_message_to_agent",
30
30
  description: 'Send a message to an EA. If task_name matches an existing EA, it will be resumed with full history. If not, a new EA will be created with that name. Use priority to control urgency: "urgent"/"high" will interrupt running EA immediately, "normal" will queue the message.',
31
31
  input_schema: {
32
- type: 'object',
32
+ type: "object",
33
33
  properties: {
34
34
  task_name: {
35
- type: 'string',
35
+ type: "string",
36
36
  description: 'Unique descriptive name for the EA (e.g., "magic-toolbox-worktrees", "merge-feature-branches")',
37
37
  },
38
38
  task: {
39
- type: 'string',
40
- description: 'Task description or message for the EA',
39
+ type: "string",
40
+ description: "Task description or message for the EA",
41
41
  },
42
42
  priority: {
43
- type: 'string',
44
- enum: ['normal', 'high', 'urgent'],
43
+ type: "string",
44
+ enum: ["normal", "high", "urgent"],
45
45
  description: 'Message priority: "normal" = queue (default), "high"/"urgent" = interrupt running EA immediately. Use high/urgent when: user says "stop/wait", new info invalidates current work, critical correction needed.',
46
- default: 'normal',
46
+ default: "normal",
47
47
  },
48
48
  },
49
- required: ['task_name', 'task'],
49
+ required: ["task_name", "task"],
50
50
  },
51
51
  },
52
52
  {
53
- name: 'inspect_agent',
54
- description: 'Get detailed info about a specific agent (for tie-breaking when multiple agents might match)',
53
+ name: "inspect_agent",
54
+ description: "Get detailed info about a specific agent (for tie-breaking when multiple agents might match)",
55
55
  input_schema: {
56
- type: 'object',
56
+ type: "object",
57
57
  properties: {
58
58
  task_name: {
59
- type: 'string',
60
- description: 'The task_name of the EA to inspect',
59
+ type: "string",
60
+ description: "The task_name of the EA to inspect",
61
61
  },
62
62
  },
63
- required: ['task_name'],
63
+ required: ["task_name"],
64
64
  },
65
65
  },
66
66
  ];
@@ -71,13 +71,14 @@ export function createInteractionTools(context) {
71
71
  * Called when a tool is invoked by the IA
72
72
  */
73
73
  export async function handleToolInvocation(toolName, args, context) {
74
+ const payload = args && typeof args === "object" ? args : {};
74
75
  switch (toolName) {
75
- case 'list_my_agents':
76
- return await handleListMyAgents(args, context);
77
- case 'send_message_to_agent':
78
- return await handleSendMessageToAgent(args, context);
79
- case 'inspect_agent':
80
- return await handleInspectAgent(args, context);
76
+ case "list_my_agents":
77
+ return await handleListMyAgents(payload, context);
78
+ case "send_message_to_agent":
79
+ return await handleSendMessageToAgent(payload, context);
80
+ case "inspect_agent":
81
+ return await handleInspectAgent(payload, context);
81
82
  default:
82
83
  throw new Error(`Unknown tool: ${toolName}`);
83
84
  }
@@ -86,16 +87,18 @@ export async function handleToolInvocation(toolName, args, context) {
86
87
  * Handle list_my_agents tool
87
88
  */
88
89
  async function handleListMyAgents(args, context) {
89
- const limit = args.limit || 20;
90
+ const limit = typeof args.limit === "number" && Number.isFinite(args.limit)
91
+ ? Math.max(1, Math.trunc(args.limit))
92
+ : 20;
90
93
  // Get own EAs from session storage
91
94
  // EAs are stored as sessions with agentType: "execution" and parentSession set
92
- const agentId = context.agentId.replace('-ia', ''); // Convert 'toolbox-ia' to 'toolbox'
95
+ const agentId = context.agentId.replace("-ia", ""); // Convert 'toolbox-ia' to 'toolbox'
93
96
  const allSessions = await listAgentSessions(agentId);
94
97
  // Load metadata for each session to check agentType
95
98
  const eaSessions = [];
96
99
  for (const sessionKey of allSessions.slice(0, limit)) {
97
100
  const metadata = await loadSessionMetadata(agentId, sessionKey);
98
- if (metadata && metadata.agentType === 'execution') {
101
+ if (metadata && metadata.agentType === "execution") {
99
102
  eaSessions.push({
100
103
  sessionKey,
101
104
  metadata,
@@ -108,36 +111,39 @@ async function handleListMyAgents(args, context) {
108
111
  const ownFormatted = eaSessions
109
112
  .map((ea) => {
110
113
  const updated = ea.metadata.updated; // New format uses 'updated' (ISO string)
111
- const lastActiveDate = updated ? new Date(updated).toLocaleString() : 'Never';
114
+ const lastActiveDate = updated
115
+ ? new Date(updated).toLocaleString()
116
+ : "Never";
112
117
  const taskName = ea.sessionKey; // sessionKey is the task name
113
118
  const displayName = ea.metadata.displayName || taskName;
114
119
  const isActive = context.broker.isAgentActive(`${context.oduName}-ea-${taskName}`);
115
- const status = isActive ? '🟢 active' : '⚪ idle';
120
+ const status = isActive ? "🟢 active" : "⚪ idle";
116
121
  return `• ${displayName} (${status})\n Last active: ${lastActiveDate}`;
117
122
  })
118
- .join('\n\n');
123
+ .join("\n\n");
119
124
  // Format external callers (show full names)
120
125
  const externalFormatted = externalAgentIds.length > 0
121
126
  ? externalAgentIds
122
127
  .map((agentId) => {
123
128
  const isActive = context.broker.isAgentActive(agentId);
124
- const status = isActive ? '🟢 active' : '⚪ idle';
129
+ const status = isActive ? "🟢 active" : "⚪ idle";
125
130
  return `• ${agentId} (${status})\n External agent - has sent you messages`;
126
131
  })
127
- .join('\n\n')
128
- : '';
132
+ .join("\n\n")
133
+ : "";
129
134
  // Build response
130
- let text = '';
135
+ let text = "";
131
136
  if (eaSessions.length > 0) {
132
137
  text += `Your Specialist Agents (${eaSessions.length}):\n\n${ownFormatted}`;
133
138
  }
134
139
  if (externalFormatted) {
135
140
  if (text)
136
- text += '\n\n---\n\n';
141
+ text += "\n\n---\n\n";
137
142
  text += `External Agents (${externalAgentIds.length}):\n\n${externalFormatted}`;
138
143
  }
139
144
  if (!text) {
140
- text = 'No agents found. You can create a new one with send_message_to_agent.';
145
+ text =
146
+ "No agents found. You can create a new one with send_message_to_agent.";
141
147
  }
142
148
  return text;
143
149
  }
@@ -145,9 +151,12 @@ async function handleListMyAgents(args, context) {
145
151
  * Handle send_message_to_agent tool
146
152
  */
147
153
  async function handleSendMessageToAgent(args, context) {
148
- const taskName = args.task_name;
149
- const task = args.task;
150
- const priority = args.priority || 'normal';
154
+ const taskName = typeof args.task_name === "string" ? args.task_name : "";
155
+ const task = typeof args.task === "string" ? args.task : "";
156
+ if (!taskName || !task) {
157
+ throw new Error("Invalid arguments: task_name and task are required.");
158
+ }
159
+ const priority = typeof args.priority === "string" ? args.priority : "normal";
151
160
  // Convert task_name to fully-qualified EA agent ID
152
161
  const eaId = `${context.oduName}-ea-${taskName}`;
153
162
  // Send message via broker
@@ -159,7 +168,7 @@ async function handleSendMessageToAgent(args, context) {
159
168
  priority: priority,
160
169
  timestamp: Date.now(),
161
170
  metadata: {
162
- source: 'ia',
171
+ source: "ia",
163
172
  taskName,
164
173
  },
165
174
  });
@@ -169,8 +178,11 @@ async function handleSendMessageToAgent(args, context) {
169
178
  * Handle inspect_agent tool
170
179
  */
171
180
  async function handleInspectAgent(args, context) {
172
- const taskName = args.task_name;
173
- const agentId = context.agentId.replace('-ia', ''); // Convert 'toolbox-ia' to 'toolbox'
181
+ const taskName = typeof args.task_name === "string" ? args.task_name : "";
182
+ if (!taskName) {
183
+ throw new Error("Invalid arguments: task_name is required.");
184
+ }
185
+ const agentId = context.agentId.replace("-ia", ""); // Convert 'toolbox-ia' to 'toolbox'
174
186
  // Load session metadata
175
187
  const metadata = await loadSessionMetadata(agentId, taskName);
176
188
  if (!metadata) {
@@ -178,13 +190,13 @@ async function handleInspectAgent(args, context) {
178
190
  }
179
191
  const updated = metadata.updated; // New format uses 'updated' (ISO string)
180
192
  const created = metadata.created; // New format uses 'created' (ISO string)
181
- const lastActiveDate = updated ? new Date(updated).toLocaleString() : 'Never';
182
- const createdDate = created ? new Date(created).toLocaleString() : 'Unknown';
193
+ const lastActiveDate = updated ? new Date(updated).toLocaleString() : "Never";
194
+ const createdDate = created ? new Date(created).toLocaleString() : "Unknown";
183
195
  const displayName = metadata.displayName || taskName;
184
196
  // Check if agent is currently active
185
197
  const eaId = `${context.oduName}-ea-${taskName}`;
186
198
  const isActive = context.broker.isAgentActive(eaId);
187
- const status = isActive ? '🟢 active' : '⚪ idle';
199
+ const status = isActive ? "🟢 active" : "⚪ idle";
188
200
  return `EA: ${displayName} (${status})
189
201
 
190
202
  Task Name: ${taskName}
@@ -192,5 +204,5 @@ Created: ${createdDate}
192
204
  Last Active: ${lastActiveDate}
193
205
  Compactions: ${metadata.compactionCount || 0}
194
206
 
195
- This EA specializes in: ${metadata.displayName || 'general tasks'}`;
207
+ This EA specializes in: ${metadata.displayName || "general tasks"}`;
196
208
  }
@@ -4,9 +4,9 @@
4
4
  * Loads prompt templates from files and substitutes {{variable}} patterns.
5
5
  * Similar to magic-toolbox/agentkit/prompts/loader.ts
6
6
  */
7
- import fs from 'node:fs/promises';
8
- import path from 'node:path';
9
- import { resolveUserPath } from '../../utils.js';
7
+ import fs from "node:fs/promises";
8
+ import path from "node:path";
9
+ import { resolveUserPath } from "../../utils.js";
10
10
  /**
11
11
  * Cache for loaded prompts (performance optimization)
12
12
  */
@@ -29,7 +29,7 @@ export async function loadPrompt(promptPath, variables = {}) {
29
29
  let template = promptCache.get(cacheKey);
30
30
  if (!template) {
31
31
  // Load from file
32
- template = await fs.readFile(resolvedPath, 'utf-8');
32
+ template = await fs.readFile(resolvedPath, "utf-8");
33
33
  // Cache the template
34
34
  promptCache.set(cacheKey, template);
35
35
  }
@@ -51,7 +51,7 @@ async function resolvePromptPath(promptPath) {
51
51
  return promptPath;
52
52
  }
53
53
  // Try workspace prompts/ directory first
54
- const workspacePath = path.join(resolveUserPath('~/nexus/home'), 'prompts', promptPath);
54
+ const workspacePath = path.join(resolveUserPath("~/nexus/home"), "prompts", promptPath);
55
55
  try {
56
56
  await fs.access(workspacePath);
57
57
  return workspacePath;
@@ -61,8 +61,8 @@ async function resolvePromptPath(promptPath) {
61
61
  }
62
62
  // Try nexus bundled prompts/ directory
63
63
  // (Resolve relative to this file's directory)
64
- const nexusRootPath = path.resolve(new URL(import.meta.url).pathname, '../../../..');
65
- const bundledPath = path.join(nexusRootPath, 'prompts', promptPath);
64
+ const nexusRootPath = path.resolve(new URL(import.meta.url).pathname, "../../../..");
65
+ const bundledPath = path.join(nexusRootPath, "prompts", promptPath);
66
66
  try {
67
67
  await fs.access(bundledPath);
68
68
  return bundledPath;
@@ -82,7 +82,7 @@ function substituteVariables(template, variables) {
82
82
  let result = template;
83
83
  // Replace all {{variable}} patterns
84
84
  for (const [key, value] of Object.entries(variables)) {
85
- const pattern = new RegExp(`\\{\\{${key}\\}\\}`, 'g');
85
+ const pattern = new RegExp(`\\{\\{${key}\\}\\}`, "g");
86
86
  result = result.replace(pattern, value);
87
87
  }
88
88
  return result;