quoxcli 0.0.0-stage → 0.3.1

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 (516) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +144 -2
  3. package/bin/quox.js +265 -0
  4. package/bin/quoxon.js +8 -0
  5. package/lib/api/endpoints/admin.js +151 -0
  6. package/lib/api/endpoints/aee.js +38 -0
  7. package/lib/api/endpoints/agent-attach.js +126 -0
  8. package/lib/api/endpoints/agent-schedules.js +26 -0
  9. package/lib/api/endpoints/agents.js +63 -0
  10. package/lib/api/endpoints/assistants.js +62 -0
  11. package/lib/api/endpoints/audit.js +14 -0
  12. package/lib/api/endpoints/auth.js +50 -0
  13. package/lib/api/endpoints/awareness.js +34 -0
  14. package/lib/api/endpoints/away.js +15 -0
  15. package/lib/api/endpoints/backup-schedules.js +20 -0
  16. package/lib/api/endpoints/backups.js +86 -0
  17. package/lib/api/endpoints/brain.js +140 -0
  18. package/lib/api/endpoints/budgets.js +62 -0
  19. package/lib/api/endpoints/calendarq.js +71 -0
  20. package/lib/api/endpoints/catalog.js +14 -0
  21. package/lib/api/endpoints/chat.js +61 -0
  22. package/lib/api/endpoints/consent.js +26 -0
  23. package/lib/api/endpoints/contactsq.js +68 -0
  24. package/lib/api/endpoints/conversations.js +46 -0
  25. package/lib/api/endpoints/custom-roles.js +92 -0
  26. package/lib/api/endpoints/divisions.js +56 -0
  27. package/lib/api/endpoints/domains.js +38 -0
  28. package/lib/api/endpoints/engagement.js +231 -0
  29. package/lib/api/endpoints/engine.js +11 -0
  30. package/lib/api/endpoints/entity.js +50 -0
  31. package/lib/api/endpoints/executions.js +45 -0
  32. package/lib/api/endpoints/fetchAllowlist.js +27 -0
  33. package/lib/api/endpoints/file.js +20 -0
  34. package/lib/api/endpoints/files.js +40 -0
  35. package/lib/api/endpoints/github.js +21 -0
  36. package/lib/api/endpoints/governance.js +43 -0
  37. package/lib/api/endpoints/hat.js +66 -0
  38. package/lib/api/endpoints/inbox.js +52 -0
  39. package/lib/api/endpoints/inboxq.js +120 -0
  40. package/lib/api/endpoints/index.js +242 -0
  41. package/lib/api/endpoints/invites.js +19 -0
  42. package/lib/api/endpoints/llm-policy.js +43 -0
  43. package/lib/api/endpoints/lucid.js +89 -0
  44. package/lib/api/endpoints/members.js +32 -0
  45. package/lib/api/endpoints/memory.js +94 -0
  46. package/lib/api/endpoints/mfa.js +32 -0
  47. package/lib/api/endpoints/mind.js +13 -0
  48. package/lib/api/endpoints/mon.js +184 -0
  49. package/lib/api/endpoints/notesq.js +43 -0
  50. package/lib/api/endpoints/objectives.js +68 -0
  51. package/lib/api/endpoints/orgs.js +38 -0
  52. package/lib/api/endpoints/plugins.js +152 -0
  53. package/lib/api/endpoints/powers.js +75 -0
  54. package/lib/api/endpoints/presence.js +33 -0
  55. package/lib/api/endpoints/prompts.js +69 -0
  56. package/lib/api/endpoints/qlarity.js +122 -0
  57. package/lib/api/endpoints/quoxbox.js +55 -0
  58. package/lib/api/endpoints/quoxchat.js +54 -0
  59. package/lib/api/endpoints/quoxflow.js +32 -0
  60. package/lib/api/endpoints/quoxplan.js +121 -0
  61. package/lib/api/endpoints/quoxseo.js +114 -0
  62. package/lib/api/endpoints/reach.js +47 -0
  63. package/lib/api/endpoints/router.js +17 -0
  64. package/lib/api/endpoints/runs.js +38 -0
  65. package/lib/api/endpoints/safety.js +53 -0
  66. package/lib/api/endpoints/scim.js +46 -0
  67. package/lib/api/endpoints/scopes.js +14 -0
  68. package/lib/api/endpoints/security.js +69 -0
  69. package/lib/api/endpoints/setup.js +90 -0
  70. package/lib/api/endpoints/skills.js +200 -0
  71. package/lib/api/endpoints/sso.js +67 -0
  72. package/lib/api/endpoints/stepup.js +20 -0
  73. package/lib/api/endpoints/tags.js +32 -0
  74. package/lib/api/endpoints/teams.js +56 -0
  75. package/lib/api/endpoints/telephony.js +46 -0
  76. package/lib/api/endpoints/tg.js +56 -0
  77. package/lib/api/endpoints/tools.js +50 -0
  78. package/lib/api/endpoints/traces.js +157 -0
  79. package/lib/api/endpoints/triggers.js +96 -0
  80. package/lib/api/endpoints/user-library.js +41 -0
  81. package/lib/api/endpoints/users.js +20 -0
  82. package/lib/api/endpoints/v1.js +585 -0
  83. package/lib/api/endpoints/vault.js +192 -0
  84. package/lib/api/endpoints/voice.js +22 -0
  85. package/lib/api/endpoints/volt.js +84 -0
  86. package/lib/api/endpoints/ward.js +47 -0
  87. package/lib/api/endpoints/webhooks.js +46 -0
  88. package/lib/api/endpoints/workflows.js +169 -0
  89. package/lib/api/endpoints/x.js +32 -0
  90. package/lib/api/endpoints.js +15 -0
  91. package/lib/commands/actions.js +61 -0
  92. package/lib/commands/admin.js +375 -0
  93. package/lib/commands/aee.js +99 -0
  94. package/lib/commands/agent.js +337 -0
  95. package/lib/commands/agentAttach.js +1528 -0
  96. package/lib/commands/approvals.js +119 -0
  97. package/lib/commands/aside.js +24 -0
  98. package/lib/commands/ask.js +144 -0
  99. package/lib/commands/assistant.js +169 -0
  100. package/lib/commands/auth.js +464 -0
  101. package/lib/commands/awareness.js +88 -0
  102. package/lib/commands/backup.js +377 -0
  103. package/lib/commands/brain.js +1085 -0
  104. package/lib/commands/budget.js +241 -0
  105. package/lib/commands/build.js +170 -0
  106. package/lib/commands/calendar.js +216 -0
  107. package/lib/commands/capabilities.js +34 -0
  108. package/lib/commands/chat.js +295 -0
  109. package/lib/commands/claude.js +380 -0
  110. package/lib/commands/config-cmd.js +106 -0
  111. package/lib/commands/consent.js +84 -0
  112. package/lib/commands/contacts.js +1016 -0
  113. package/lib/commands/contactsSelftest.js +132 -0
  114. package/lib/commands/conversation.js +105 -0
  115. package/lib/commands/dashboard.js +43 -0
  116. package/lib/commands/department.js +96 -0
  117. package/lib/commands/dev.js +620 -0
  118. package/lib/commands/devResident.js +326 -0
  119. package/lib/commands/devSupervisor.js +1062 -0
  120. package/lib/commands/discord.js +132 -0
  121. package/lib/commands/doctor.js +181 -0
  122. package/lib/commands/domain.js +114 -0
  123. package/lib/commands/done.js +347 -0
  124. package/lib/commands/engagement.js +597 -0
  125. package/lib/commands/entity.js +119 -0
  126. package/lib/commands/facebook.js +212 -0
  127. package/lib/commands/fetchAllowlist.js +71 -0
  128. package/lib/commands/file.js +165 -0
  129. package/lib/commands/fleet.js +1189 -0
  130. package/lib/commands/governance.js +647 -0
  131. package/lib/commands/gripe.js +355 -0
  132. package/lib/commands/hat.js +374 -0
  133. package/lib/commands/helpers.js +96 -0
  134. package/lib/commands/hyperion.js +58 -0
  135. package/lib/commands/inbox.js +173 -0
  136. package/lib/commands/instagram.js +264 -0
  137. package/lib/commands/integration.js +100 -0
  138. package/lib/commands/inventory.js +115 -0
  139. package/lib/commands/invites.js +45 -0
  140. package/lib/commands/licence.js +139 -0
  141. package/lib/commands/linkedin.js +178 -0
  142. package/lib/commands/llm-policy.js +117 -0
  143. package/lib/commands/llm.js +45 -0
  144. package/lib/commands/lucid.js +597 -0
  145. package/lib/commands/mail.js +531 -0
  146. package/lib/commands/memory.js +361 -0
  147. package/lib/commands/mind.js +71 -0
  148. package/lib/commands/mon.js +581 -0
  149. package/lib/commands/monitoring.js +86 -0
  150. package/lib/commands/motion.js +22 -0
  151. package/lib/commands/notes.js +1246 -0
  152. package/lib/commands/notesBatch.js +160 -0
  153. package/lib/commands/notesBridges.js +56 -0
  154. package/lib/commands/notesLinks.js +60 -0
  155. package/lib/commands/notification.js +57 -0
  156. package/lib/commands/nucleus.js +123 -0
  157. package/lib/commands/objective.js +240 -0
  158. package/lib/commands/offload.js +89 -0
  159. package/lib/commands/onboard.js +329 -0
  160. package/lib/commands/open.js +56 -0
  161. package/lib/commands/org.js +276 -0
  162. package/lib/commands/peek.js +28 -0
  163. package/lib/commands/plan.js +944 -0
  164. package/lib/commands/plugin-doctor.js +1091 -0
  165. package/lib/commands/plugin.js +649 -0
  166. package/lib/commands/policy.js +78 -0
  167. package/lib/commands/powers.js +296 -0
  168. package/lib/commands/presence.js +89 -0
  169. package/lib/commands/prompt.js +350 -0
  170. package/lib/commands/provider.js +159 -0
  171. package/lib/commands/qlarity.js +706 -0
  172. package/lib/commands/quoxbox.js +270 -0
  173. package/lib/commands/quoxchat.js +275 -0
  174. package/lib/commands/quoxseo.js +378 -0
  175. package/lib/commands/reach.js +159 -0
  176. package/lib/commands/role.js +286 -0
  177. package/lib/commands/router.js +77 -0
  178. package/lib/commands/rows.js +358 -0
  179. package/lib/commands/run.js +187 -0
  180. package/lib/commands/safety.js +107 -0
  181. package/lib/commands/scim.js +88 -0
  182. package/lib/commands/scope.js +58 -0
  183. package/lib/commands/security.js +157 -0
  184. package/lib/commands/server.js +292 -0
  185. package/lib/commands/service.js +89 -0
  186. package/lib/commands/settings.js +99 -0
  187. package/lib/commands/setup.js +569 -0
  188. package/lib/commands/skillManifest.js +113 -0
  189. package/lib/commands/skillRightsFormat.js +38 -0
  190. package/lib/commands/skills.js +687 -0
  191. package/lib/commands/slot.js +1451 -0
  192. package/lib/commands/sso.js +229 -0
  193. package/lib/commands/status.js +137 -0
  194. package/lib/commands/tag.js +91 -0
  195. package/lib/commands/team.js +142 -0
  196. package/lib/commands/tg.js +240 -0
  197. package/lib/commands/tiktok.js +218 -0
  198. package/lib/commands/tips.js +23 -0
  199. package/lib/commands/tool.js +304 -0
  200. package/lib/commands/trace.js +530 -0
  201. package/lib/commands/trigger.js +223 -0
  202. package/lib/commands/update.js +46 -0
  203. package/lib/commands/vault.js +1447 -0
  204. package/lib/commands/vm.js +237 -0
  205. package/lib/commands/voice.js +213 -0
  206. package/lib/commands/volt.js +570 -0
  207. package/lib/commands/walkthrough.js +32 -0
  208. package/lib/commands/watch.js +167 -0
  209. package/lib/commands/webhook.js +137 -0
  210. package/lib/commands/welcome.js +14 -0
  211. package/lib/commands/workflow.js +660 -0
  212. package/lib/commands/x.js +448 -0
  213. package/lib/core/actingAs.js +136 -0
  214. package/lib/core/activeSummary.js +186 -0
  215. package/lib/core/aee.js +53 -0
  216. package/lib/core/agentAlias.js +163 -0
  217. package/lib/core/approvalContext.js +61 -0
  218. package/lib/core/aside.js +54 -0
  219. package/lib/core/askDecision.js +60 -0
  220. package/lib/core/auth.js +501 -0
  221. package/lib/core/banner.js +143 -0
  222. package/lib/core/brainPrime.js +90 -0
  223. package/lib/core/callerSource.js +129 -0
  224. package/lib/core/claudeLs.js +94 -0
  225. package/lib/core/cliBuild.js +62 -0
  226. package/lib/core/client.js +693 -0
  227. package/lib/core/commandRegistrars.js +121 -0
  228. package/lib/core/completions.js +163 -0
  229. package/lib/core/config.js +669 -0
  230. package/lib/core/confirm.js +37 -0
  231. package/lib/core/customHats.js +168 -0
  232. package/lib/core/deeplinks.js +76 -0
  233. package/lib/core/doneEngineFetch.js +227 -0
  234. package/lib/core/errors.js +441 -0
  235. package/lib/core/global-flags.js +190 -0
  236. package/lib/core/governedSession.js +402 -0
  237. package/lib/core/hyperion.js +102 -0
  238. package/lib/core/inboxResolution.js +65 -0
  239. package/lib/core/lazyCommands.js +122 -0
  240. package/lib/core/liveSessionsReport.js +112 -0
  241. package/lib/core/offload.js +504 -0
  242. package/lib/core/org-override.js +52 -0
  243. package/lib/core/orgResolve.js +70 -0
  244. package/lib/core/output.js +239 -0
  245. package/lib/core/peek.js +126 -0
  246. package/lib/core/prodEnv.js +7 -0
  247. package/lib/core/profileUsers.js +51 -0
  248. package/lib/core/promptCancel.js +18 -0
  249. package/lib/core/quoxglyph.js +158 -0
  250. package/lib/core/repoPath.js +11 -0
  251. package/lib/core/residentAlarm.js +282 -0
  252. package/lib/core/residentAuth.js +243 -0
  253. package/lib/core/residentPump.js +229 -0
  254. package/lib/core/residentSeed.js +106 -0
  255. package/lib/core/rootOptions.js +39 -0
  256. package/lib/core/router.js +168 -0
  257. package/lib/core/selfUpdate.js +188 -0
  258. package/lib/core/sessionHeartbeat.js +192 -0
  259. package/lib/core/sessionsOverview.js +224 -0
  260. package/lib/core/slotKeeper.js +527 -0
  261. package/lib/core/slotWake.js +120 -0
  262. package/lib/core/supervisorEngine.js +933 -0
  263. package/lib/core/systemdInstaller.js +256 -0
  264. package/lib/core/version.js +87 -0
  265. package/lib/core/vm.js +361 -0
  266. package/lib/core/vmTui.js +86 -0
  267. package/lib/core/walkthrough.js +35 -0
  268. package/lib/hyperion/deck.js +29 -0
  269. package/lib/lucid/LucidCard.jsx +68 -0
  270. package/lib/lucid/LucidIntro.jsx +92 -0
  271. package/lib/lucid/blind.js +71 -0
  272. package/lib/lucid/cards.js +86 -0
  273. package/lib/lucid/deck.js +32 -0
  274. package/lib/lucid/fmt.js +139 -0
  275. package/lib/lucid/markdown.js +81 -0
  276. package/lib/lucid/motion.js +56 -0
  277. package/lib/lucid/sitrep.js +173 -0
  278. package/lib/plugins/loader.js +93 -0
  279. package/lib/quoxon/activity.js +116 -0
  280. package/lib/quoxon/aocl.js +117 -0
  281. package/lib/quoxon/api.js +952 -0
  282. package/lib/quoxon/app.js +4032 -0
  283. package/lib/quoxon/approvalFacts.js +94 -0
  284. package/lib/quoxon/approvalsView.js +325 -0
  285. package/lib/quoxon/asideView.js +40 -0
  286. package/lib/quoxon/ask.js +121 -0
  287. package/lib/quoxon/away.js +52 -0
  288. package/lib/quoxon/bang.js +224 -0
  289. package/lib/quoxon/bulkRisk.js +17 -0
  290. package/lib/quoxon/capabilities.js +82 -0
  291. package/lib/quoxon/cells.js +53 -0
  292. package/lib/quoxon/commandShort.js +112 -0
  293. package/lib/quoxon/commands.js +479 -0
  294. package/lib/quoxon/connect.js +654 -0
  295. package/lib/quoxon/connectCard.js +45 -0
  296. package/lib/quoxon/consent.js +86 -0
  297. package/lib/quoxon/context.js +68 -0
  298. package/lib/quoxon/copy.js +34 -0
  299. package/lib/quoxon/countdownLine.js +11 -0
  300. package/lib/quoxon/demo.autoplay.js +29 -0
  301. package/lib/quoxon/demo.fixtures.js +24 -0
  302. package/lib/quoxon/demo.js +76 -0
  303. package/lib/quoxon/devObserver.js +20 -0
  304. package/lib/quoxon/dividerAocl.js +191 -0
  305. package/lib/quoxon/dividerRule.js +57 -0
  306. package/lib/quoxon/dragonModes.js +150 -0
  307. package/lib/quoxon/dragonView.js +41 -0
  308. package/lib/quoxon/earlyInput.js +40 -0
  309. package/lib/quoxon/echo.js +15 -0
  310. package/lib/quoxon/egg.js +36 -0
  311. package/lib/quoxon/events.js +677 -0
  312. package/lib/quoxon/feedback.js +50 -0
  313. package/lib/quoxon/gallery.js +237 -0
  314. package/lib/quoxon/handoffOffer.js +78 -0
  315. package/lib/quoxon/hatSwitch.js +37 -0
  316. package/lib/quoxon/headless.js +161 -0
  317. package/lib/quoxon/hostUrls.js +41 -0
  318. package/lib/quoxon/indicator.js +197 -0
  319. package/lib/quoxon/intent.js +52 -0
  320. package/lib/quoxon/keys.js +164 -0
  321. package/lib/quoxon/launcher.js +103 -0
  322. package/lib/quoxon/main.js +176 -0
  323. package/lib/quoxon/markdown.js +341 -0
  324. package/lib/quoxon/markdownSettle.js +19 -0
  325. package/lib/quoxon/matrixDomains.json +46 -0
  326. package/lib/quoxon/mentions.js +90 -0
  327. package/lib/quoxon/mind.js +103 -0
  328. package/lib/quoxon/mode.js +46 -0
  329. package/lib/quoxon/model.js +311 -0
  330. package/lib/quoxon/modelPrefs.js +345 -0
  331. package/lib/quoxon/motion/clock.js +70 -0
  332. package/lib/quoxon/motion/color.js +35 -0
  333. package/lib/quoxon/motion/frame.js +14 -0
  334. package/lib/quoxon/motion/level.js +91 -0
  335. package/lib/quoxon/motion/reveal.js +54 -0
  336. package/lib/quoxon/motion/ring.js +79 -0
  337. package/lib/quoxon/mouse.js +211 -0
  338. package/lib/quoxon/noai.js +57 -0
  339. package/lib/quoxon/objects/agent.js +61 -0
  340. package/lib/quoxon/objects/away.js +72 -0
  341. package/lib/quoxon/objects/crystal.js +100 -0
  342. package/lib/quoxon/objects/fetch.js +182 -0
  343. package/lib/quoxon/objects/fleet.js +149 -0
  344. package/lib/quoxon/objects/health.js +186 -0
  345. package/lib/quoxon/objects/index.js +106 -0
  346. package/lib/quoxon/objects/ladder.js +71 -0
  347. package/lib/quoxon/objects/memory.js +44 -0
  348. package/lib/quoxon/objects/mirror.js +137 -0
  349. package/lib/quoxon/objects/model.js +118 -0
  350. package/lib/quoxon/objects/peek.js +17 -0
  351. package/lib/quoxon/objects/proof.js +110 -0
  352. package/lib/quoxon/objects/prove.js +130 -0
  353. package/lib/quoxon/objects/replay.js +125 -0
  354. package/lib/quoxon/objects/sitrep.js +58 -0
  355. package/lib/quoxon/objects/skill.js +105 -0
  356. package/lib/quoxon/objects/view.js +87 -0
  357. package/lib/quoxon/objects/workflow.js +119 -0
  358. package/lib/quoxon/observers.js +42 -0
  359. package/lib/quoxon/onboarding/copy.js +263 -0
  360. package/lib/quoxon/onboarding/credential.js +108 -0
  361. package/lib/quoxon/onboarding/detect.js +22 -0
  362. package/lib/quoxon/onboarding/dockerOffer.js +45 -0
  363. package/lib/quoxon/onboarding/failureCause.js +33 -0
  364. package/lib/quoxon/onboarding/finish.js +134 -0
  365. package/lib/quoxon/onboarding/index.js +94 -0
  366. package/lib/quoxon/onboarding/installRunner.js +284 -0
  367. package/lib/quoxon/onboarding/intent.js +53 -0
  368. package/lib/quoxon/onboarding/journey.js +73 -0
  369. package/lib/quoxon/onboarding/preflight.js +156 -0
  370. package/lib/quoxon/onboarding/probe.js +65 -0
  371. package/lib/quoxon/onboarding/runner.js +58 -0
  372. package/lib/quoxon/onboarding/view.js +682 -0
  373. package/lib/quoxon/orgLabel.js +10 -0
  374. package/lib/quoxon/orgSwitch.js +33 -0
  375. package/lib/quoxon/ownBroadcast.js +22 -0
  376. package/lib/quoxon/palette.js +43 -0
  377. package/lib/quoxon/print.js +98 -0
  378. package/lib/quoxon/profileSwitch.js +53 -0
  379. package/lib/quoxon/promptHistory.js +41 -0
  380. package/lib/quoxon/providers.js +48 -0
  381. package/lib/quoxon/qart.js +348 -0
  382. package/lib/quoxon/qdragon.js +410 -0
  383. package/lib/quoxon/qdragonFly.js +61 -0
  384. package/lib/quoxon/qdragonScenes.js +282 -0
  385. package/lib/quoxon/qeyes.js +213 -0
  386. package/lib/quoxon/qglyph.js +143 -0
  387. package/lib/quoxon/qhello.js +58 -0
  388. package/lib/quoxon/qmotion.js +132 -0
  389. package/lib/quoxon/render.js +1167 -0
  390. package/lib/quoxon/resend.js +72 -0
  391. package/lib/quoxon/roster.js +307 -0
  392. package/lib/quoxon/route.js +39 -0
  393. package/lib/quoxon/rows.js +711 -0
  394. package/lib/quoxon/rowsStore.js +80 -0
  395. package/lib/quoxon/rules.js +130 -0
  396. package/lib/quoxon/screenContext.js +150 -0
  397. package/lib/quoxon/screenFrames.js +254 -0
  398. package/lib/quoxon/session.js +238 -0
  399. package/lib/quoxon/sessionDead.js +17 -0
  400. package/lib/quoxon/signin.js +125 -0
  401. package/lib/quoxon/skills.js +30 -0
  402. package/lib/quoxon/slash/agents.js +112 -0
  403. package/lib/quoxon/slash/argSources.js +65 -0
  404. package/lib/quoxon/slash/args.js +65 -0
  405. package/lib/quoxon/slash/automate.js +89 -0
  406. package/lib/quoxon/slash/broadcast.js +140 -0
  407. package/lib/quoxon/slash/broadcastRun.js +108 -0
  408. package/lib/quoxon/slash/card.js +30 -0
  409. package/lib/quoxon/slash/challenge.js +114 -0
  410. package/lib/quoxon/slash/cliCommand.js +53 -0
  411. package/lib/quoxon/slash/cliLeaves.json +948 -0
  412. package/lib/quoxon/slash/compact.js +90 -0
  413. package/lib/quoxon/slash/confirm.js +30 -0
  414. package/lib/quoxon/slash/crystallize.js +69 -0
  415. package/lib/quoxon/slash/dashboard.js +136 -0
  416. package/lib/quoxon/slash/draft.js +54 -0
  417. package/lib/quoxon/slash/hatWalk.js +206 -0
  418. package/lib/quoxon/slash/inverses.js +77 -0
  419. package/lib/quoxon/slash/killer.js +24 -0
  420. package/lib/quoxon/slash/killerApi.js +16 -0
  421. package/lib/quoxon/slash/ledger.js +88 -0
  422. package/lib/quoxon/slash/listView.js +30 -0
  423. package/lib/quoxon/slash/modelCmd.js +261 -0
  424. package/lib/quoxon/slash/palette.js +118 -0
  425. package/lib/quoxon/slash/paletteController.js +169 -0
  426. package/lib/quoxon/slash/panels.js +116 -0
  427. package/lib/quoxon/slash/picker.js +56 -0
  428. package/lib/quoxon/slash/restart.js +202 -0
  429. package/lib/quoxon/slash/resume.js +59 -0
  430. package/lib/quoxon/slash/rowCmd.js +157 -0
  431. package/lib/quoxon/slash/rowWalk.js +175 -0
  432. package/lib/quoxon/slash/settings.js +60 -0
  433. package/lib/quoxon/slash/spawn.js +177 -0
  434. package/lib/quoxon/slash/stepUp.js +274 -0
  435. package/lib/quoxon/slash/stepUpCard.js +60 -0
  436. package/lib/quoxon/slash/stepUpCmds.js +78 -0
  437. package/lib/quoxon/slash/undoApi.js +38 -0
  438. package/lib/quoxon/slash/undoCmd.js +49 -0
  439. package/lib/quoxon/slash/undoWish.js +15 -0
  440. package/lib/quoxon/slash/watch.js +164 -0
  441. package/lib/quoxon/slash/wish.js +23 -0
  442. package/lib/quoxon/slash/wishCmd.js +32 -0
  443. package/lib/quoxon/slotChat.js +300 -0
  444. package/lib/quoxon/slotFormat.js +195 -0
  445. package/lib/quoxon/slotRun.js +131 -0
  446. package/lib/quoxon/sound/index.js +186 -0
  447. package/lib/quoxon/sound/mapping.js +120 -0
  448. package/lib/quoxon/sound/output.js +52 -0
  449. package/lib/quoxon/sound/synth.js +122 -0
  450. package/lib/quoxon/stray.js +22 -0
  451. package/lib/quoxon/suggestCommand.js +59 -0
  452. package/lib/quoxon/term.js +141 -0
  453. package/lib/quoxon/textBuffer.js +416 -0
  454. package/lib/quoxon/theme.js +286 -0
  455. package/lib/quoxon/tips.js +433 -0
  456. package/lib/quoxon/toolError.js +41 -0
  457. package/lib/quoxon/transcript.js +188 -0
  458. package/lib/quoxon/web/qface.js +89 -0
  459. package/lib/quoxon/welcome.js +52 -0
  460. package/lib/quoxon/whatsnew.js +136 -0
  461. package/lib/quoxon/whatsnew.jsonl +89 -0
  462. package/lib/quoxon/windowOrg.js +113 -0
  463. package/lib/server/diag.js +129 -0
  464. package/lib/server/doctor.js +71 -0
  465. package/lib/server/install.js +149 -0
  466. package/lib/server/pluginEnable.js +161 -0
  467. package/lib/server/skew.js +56 -0
  468. package/lib/server/snapshot.js +131 -0
  469. package/lib/server/status.js +128 -0
  470. package/lib/server/sys.js +65 -0
  471. package/lib/server/uninstall.js +63 -0
  472. package/lib/server/update.js +234 -0
  473. package/lib/toolOutputShape.js +315 -0
  474. package/lib/tui/app.jsx +289 -0
  475. package/lib/tui/components/Breadcrumb.jsx +42 -0
  476. package/lib/tui/components/ChatInput.jsx +68 -0
  477. package/lib/tui/components/Confirm.jsx +32 -0
  478. package/lib/tui/components/DataTable.jsx +270 -0
  479. package/lib/tui/components/DetailPanel.jsx +241 -0
  480. package/lib/tui/components/HelpOverlay.jsx +67 -0
  481. package/lib/tui/components/Layout.jsx +129 -0
  482. package/lib/tui/components/Palette.jsx +141 -0
  483. package/lib/tui/components/SearchInput.jsx +125 -0
  484. package/lib/tui/components/Sparkline.jsx +55 -0
  485. package/lib/tui/components/StatusBar.jsx +133 -0
  486. package/lib/tui/components/Toast.jsx +52 -0
  487. package/lib/tui/hooks/useApi.js +44 -0
  488. package/lib/tui/hooks/useHealth.js +90 -0
  489. package/lib/tui/hooks/usePolledApi.js +86 -0
  490. package/lib/tui/hooks/useTerminalSize.js +46 -0
  491. package/lib/tui/index.js +56 -0
  492. package/lib/tui/intro/Intro.jsx +332 -0
  493. package/lib/tui/jsx-loader.js +32 -0
  494. package/lib/tui/keys.js +87 -0
  495. package/lib/tui/registry.js +49 -0
  496. package/lib/tui/theme.js +103 -0
  497. package/lib/tui/views/AdminView.jsx +398 -0
  498. package/lib/tui/views/AgentView.jsx +204 -0
  499. package/lib/tui/views/BackupView.jsx +225 -0
  500. package/lib/tui/views/BrainView.jsx +223 -0
  501. package/lib/tui/views/ChatView.jsx +468 -0
  502. package/lib/tui/views/FilesView.jsx +218 -0
  503. package/lib/tui/views/FleetView.jsx +234 -0
  504. package/lib/tui/views/GovernanceView.jsx +453 -0
  505. package/lib/tui/views/HealthView.jsx +216 -0
  506. package/lib/tui/views/HyperionDeck.jsx +79 -0
  507. package/lib/tui/views/InboxView.jsx +228 -0
  508. package/lib/tui/views/LucidDeck.jsx +719 -0
  509. package/lib/tui/views/MainMenu.jsx +123 -0
  510. package/lib/tui/views/MemoryView.jsx +377 -0
  511. package/lib/tui/views/ObjectivesView.jsx +230 -0
  512. package/lib/tui/views/OrgView.jsx +229 -0
  513. package/lib/tui/views/ToolView.jsx +221 -0
  514. package/lib/tui/views/VaultView.jsx +422 -0
  515. package/lib/tui/views/WorkflowView.jsx +329 -0
  516. package/package.json +75 -4
@@ -0,0 +1,289 @@
1
+ /**
2
+ * QuoxCLI TUI — Root Application Component
3
+ *
4
+ * Manages the view state machine:
5
+ * intro -> menu -> specific view (fleet, agents, tools, etc.)
6
+ *
7
+ * Provides TuiContext to all descendants with navigation helpers,
8
+ * the CLI context (config, auth, client), and the app exit function.
9
+ *
10
+ * ── Input-mode registry ────────────────────────────────────────────────
11
+ * `inputMode` on the context tells the global keybinding handler whether
12
+ * it's safe to steal single-character keys like `?` (help) and `q` (quit):
13
+ * 'nav' - default; global shortcuts are active
14
+ * 'input' - a text field (chat box, search box) has focus; global
15
+ * single-char shortcuts are suppressed so typing works
16
+ * 'overlay' - the help overlay or command palette is open; it owns its
17
+ * own close handler and (for the palette) all keystrokes
18
+ * Escape/back always works regardless of mode (text inputs intentionally
19
+ * ignore Escape so navigation can still happen).
20
+ *
21
+ * ── Command palette + global jump keys ─────────────────────────────────
22
+ * Ctrl+K or ':' (nav mode only) opens the palette (components/Palette.jsx)
23
+ * over the current screen, content-swapped like the help overlay. It's a
24
+ * fuzzy search over lib/tui/registry.js's SCREEN_REGISTRY. Separately,
25
+ * whenever inputMode is 'nav' and a sub-view is active (screen !== 'menu'),
26
+ * pressing a screen's hotkey (1-0 / o i v g h — same as MainMenu's number
27
+ * keys) jumps straight there without returning to the menu first
28
+ * (k9s-style). Both are gated on inputMode === 'nav' so they never steal
29
+ * keystrokes from a focused chat/search box.
30
+ *
31
+ * ── Keep-alive views ───────────────────────────────────────────────────
32
+ * A screen is mounted the first time it's visited and then stays mounted
33
+ * (hidden via `display: none`) so its state — chat history, filters,
34
+ * selections — survives navigating away and back. Views only fetch data
35
+ * on their first activation (see each view's data hook), so this does
36
+ * NOT boot-fetch all screens at startup.
37
+ */
38
+
39
+ import React, { useState, useCallback, createContext, useContext } from 'react';
40
+ import { Box, Text, useApp, useInput } from 'ink';
41
+ import { matchKey } from './keys.js';
42
+ import { colors } from './theme.js';
43
+ import { MainMenu } from './views/MainMenu.jsx';
44
+ import { FleetView } from './views/FleetView.jsx';
45
+ import { AgentView } from './views/AgentView.jsx';
46
+ import { ToolView } from './views/ToolView.jsx';
47
+ import { OrgView } from './views/OrgView.jsx';
48
+ import { MemoryView } from './views/MemoryView.jsx';
49
+ import { BrainView } from './views/BrainView.jsx';
50
+ import { WorkflowView } from './views/WorkflowView.jsx';
51
+ import { ChatView } from './views/ChatView.jsx';
52
+ import { AdminView } from './views/AdminView.jsx';
53
+ import { FilesView } from './views/FilesView.jsx';
54
+ import { BackupView } from './views/BackupView.jsx';
55
+ import { ObjectivesView } from './views/ObjectivesView.jsx';
56
+ import { InboxView } from './views/InboxView.jsx';
57
+ import { VaultView } from './views/VaultView.jsx';
58
+ import { GovernanceView } from './views/GovernanceView.jsx';
59
+ import { HealthView } from './views/HealthView.jsx';
60
+ import { StatusBar } from './components/StatusBar.jsx';
61
+ import { HelpOverlay } from './components/HelpOverlay.jsx';
62
+ import { Palette } from './components/Palette.jsx';
63
+ import { Toast } from './components/Toast.jsx';
64
+ import { SCREEN_BY_HOTKEY } from './registry.js';
65
+
66
+ // ── TUI Context ───────────────────────────────────────────────────────
67
+ export const TuiContext = createContext(null);
68
+
69
+ /**
70
+ * Hook to access TUI context from any descendant component.
71
+ * @returns {{ config, auth, client, navigate, goBack, screen, history, exit, inputMode, setInputMode, orgVersion, onOrgChange }}
72
+ */
73
+ export const useTui = () => useContext(TuiContext);
74
+
75
+ // ── Screen registry ───────────────────────────────────────────────────
76
+ const SCREENS = [
77
+ 'menu',
78
+ 'fleet', 'agents', 'tools', 'orgs',
79
+ 'memory', 'brain', 'workflows', 'chat',
80
+ 'admin', 'files', 'backups',
81
+ 'objectives', 'inbox', 'vault', 'governance', 'health',
82
+ ];
83
+
84
+ // Sub-views rendered (keep-alive) alongside the menu. Keyed by screen id.
85
+ const VIEW_COMPONENTS = {
86
+ fleet: FleetView,
87
+ agents: AgentView,
88
+ tools: ToolView,
89
+ orgs: OrgView,
90
+ memory: MemoryView,
91
+ brain: BrainView,
92
+ workflows: WorkflowView,
93
+ chat: ChatView,
94
+ admin: AdminView,
95
+ files: FilesView,
96
+ backups: BackupView,
97
+ objectives: ObjectivesView,
98
+ inbox: InboxView,
99
+ vault: VaultView,
100
+ governance: GovernanceView,
101
+ health: HealthView,
102
+ };
103
+
104
+ // ── Root component ────────────────────────────────────────────────────
105
+ export function App({ ctx, initialScreen = null }) {
106
+ const { exit } = useApp();
107
+ // Deep-link: `quox tui <screen>` (or the web QuoxCLIView ?screen= param) can
108
+ // open directly on a view instead of the menu. Guard against unknown names.
109
+ const startScreen =
110
+ initialScreen && initialScreen !== 'menu' && SCREENS.includes(initialScreen)
111
+ ? initialScreen
112
+ : 'menu';
113
+ const [screen, setScreen] = useState(startScreen);
114
+ const [history, setHistory] = useState([]);
115
+ const [showHelp, setShowHelp] = useState(false);
116
+ const [showPalette, setShowPalette] = useState(false);
117
+ const [toast, setToast] = useState(null);
118
+ const [inputMode, setInputMode] = useState('nav');
119
+ const [orgVersion, setOrgVersion] = useState(0);
120
+
121
+ // Screens that have been visited at least once — kept mounted (hidden
122
+ // via display:none when not current) so their state survives navigation.
123
+ const [visited, setVisited] = useState(() =>
124
+ startScreen === 'menu' ? new Set(['menu']) : new Set(['menu', startScreen])
125
+ );
126
+
127
+ // Navigation helpers
128
+ const navigate = (target) => {
129
+ if (!SCREENS.includes(target)) return;
130
+ setHistory((prev) => [...prev, screen]);
131
+ setVisited((prev) => (prev.has(target) ? prev : new Set(prev).add(target)));
132
+ setScreen(target);
133
+ };
134
+
135
+ const goBack = () => {
136
+ if (history.length > 0) {
137
+ const prev = history[history.length - 1];
138
+ setHistory((h) => h.slice(0, -1));
139
+ setScreen(prev);
140
+ }
141
+ };
142
+
143
+ // Toast helper
144
+ const showToast = useCallback((message, type = 'info') => {
145
+ setToast({ message, type });
146
+ }, []);
147
+
148
+ const dismissToast = useCallback(() => {
149
+ setToast(null);
150
+ }, []);
151
+
152
+ // Called by OrgView after switching the active org — bumps a version
153
+ // counter that org-scoped views include in their fetch deps so they
154
+ // refetch automatically.
155
+ const onOrgChange = useCallback(() => {
156
+ setOrgVersion((v) => v + 1);
157
+ }, []);
158
+
159
+ const closeHelp = useCallback(() => {
160
+ setShowHelp(false);
161
+ setInputMode('nav');
162
+ }, []);
163
+
164
+ const closePalette = useCallback(() => {
165
+ setShowPalette(false);
166
+ setInputMode('nav');
167
+ }, []);
168
+
169
+ // Build context value
170
+ const tuiCtx = {
171
+ ...(ctx || {}),
172
+ navigate,
173
+ goBack,
174
+ screen,
175
+ history,
176
+ exit,
177
+ showToast,
178
+ inputMode,
179
+ setInputMode,
180
+ orgVersion,
181
+ onOrgChange,
182
+ };
183
+
184
+ // ── Global keybindings ──────────────────────────────────────────────
185
+ useInput((input, key) => {
186
+ // While the help overlay is open, it owns ? and Esc via its own listener.
187
+ if (showHelp) return;
188
+
189
+ // While the command palette is open, it owns all keystrokes (typing,
190
+ // arrows, Enter, Esc) via its own useInput listener.
191
+ if (showPalette) return;
192
+
193
+ // Single-character global shortcuts (help, quit, palette) and the
194
+ // global jump keys only fire in 'nav' mode — otherwise typing into a
195
+ // chat/search box would be hijacked.
196
+ if (inputMode === 'nav') {
197
+ if (matchKey('help', input, key)) {
198
+ setShowHelp(true);
199
+ setInputMode('overlay');
200
+ return;
201
+ }
202
+
203
+ // Command palette: Ctrl+K (can't be expressed via matchKey's plain
204
+ // string comparison) or ':' (a normal KEYS binding).
205
+ if ((key.ctrl && input === 'k') || matchKey('palette', input, key)) {
206
+ setShowPalette(true);
207
+ setInputMode('overlay');
208
+ return;
209
+ }
210
+
211
+ if (screen === 'menu' && matchKey('quit', input, key)) {
212
+ exit();
213
+ return;
214
+ }
215
+
216
+ // Global jump keys (k9s-style): from any non-menu screen, a screen's
217
+ // hotkey (1-0 / o i v g h — see SCREEN_BY_HOTKEY) jumps straight
218
+ // there, mirroring MainMenu's own number-key shortcuts.
219
+ if (screen !== 'menu') {
220
+ const target = SCREEN_BY_HOTKEY[input];
221
+ if (target) {
222
+ navigate(target);
223
+ return;
224
+ }
225
+ }
226
+ }
227
+
228
+ // Escape goes back from any sub-view — works regardless of input mode
229
+ // (text inputs deliberately ignore Escape so this can still fire).
230
+ if (screen !== 'menu' && matchKey('back', input, key)) {
231
+ goBack();
232
+ }
233
+ });
234
+
235
+ // ── Render ──────────────────────────────────────────────────────────
236
+ return (
237
+ <TuiContext.Provider value={tuiCtx}>
238
+ <Box flexDirection="column" width="100%" height="100%">
239
+ {/* Toast notification */}
240
+ {toast && (
241
+ <Toast
242
+ message={toast.message}
243
+ type={toast.type}
244
+ duration={3000}
245
+ onDismiss={dismissToast}
246
+ />
247
+ )}
248
+
249
+ {/* Main content area — the palette and help overlay swap in place
250
+ of the screens (no layout shift) rather than pushing them down
251
+ as a sibling. Palette takes priority if somehow both are open. */}
252
+ <Box flexGrow={1}>
253
+ {showPalette ? (
254
+ <Palette
255
+ onSelect={(id) => {
256
+ navigate(id);
257
+ closePalette();
258
+ }}
259
+ onClose={closePalette}
260
+ />
261
+ ) : showHelp ? (
262
+ <HelpOverlay visible={showHelp} onClose={closeHelp} />
263
+ ) : (
264
+ <>
265
+ <Box display={screen === 'menu' ? 'flex' : 'none'} width="100%" height="100%">
266
+ <MainMenu />
267
+ </Box>
268
+ {Object.entries(VIEW_COMPONENTS).map(([name, ViewComponent]) => (
269
+ visited.has(name) && (
270
+ <Box
271
+ key={name}
272
+ display={screen === name ? 'flex' : 'none'}
273
+ width="100%"
274
+ height="100%"
275
+ >
276
+ <ViewComponent />
277
+ </Box>
278
+ )
279
+ ))}
280
+ </>
281
+ )}
282
+ </Box>
283
+
284
+ {/* Status bar */}
285
+ <StatusBar />
286
+ </Box>
287
+ </TuiContext.Provider>
288
+ );
289
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Breadcrumb — Navigation trail showing current position
3
+ *
4
+ * Renders a breadcrumb path like: Main > Fleet > Agent Details
5
+ * where the last segment is highlighted in the primary color
6
+ * and preceding segments are dimmed.
7
+ *
8
+ * Props:
9
+ * path - array of strings, e.g. ['Main', 'Fleet', 'Agent Details']
10
+ */
11
+
12
+ import React from 'react';
13
+ import { Box, Text } from 'ink';
14
+ import { colors } from '../theme.js';
15
+
16
+ export function Breadcrumb({ path = [] }) {
17
+ if (path.length === 0) return null;
18
+
19
+ return (
20
+ <Box>
21
+ {path.map((segment, i) => {
22
+ const isLast = i === path.length - 1;
23
+ return (
24
+ <React.Fragment key={i}>
25
+ {/* Separator */}
26
+ {i > 0 && (
27
+ <Text color={colors.dim}> {'>'} </Text>
28
+ )}
29
+
30
+ {/* Segment */}
31
+ <Text
32
+ color={isLast ? colors.primary : colors.dim}
33
+ bold={isLast}
34
+ >
35
+ {segment}
36
+ </Text>
37
+ </React.Fragment>
38
+ );
39
+ })}
40
+ </Box>
41
+ );
42
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ChatInput — Presentational input line + agent picker overlay for ChatView
3
+ *
4
+ * Pure rendering component: ChatView owns all input state (draft text,
5
+ * cursor position, history, agent selection) and passes it down as props.
6
+ * Kept separate so the caret-rendering and agent-picker markup don't
7
+ * clutter ChatView's streaming/keyboard logic.
8
+ *
9
+ * Props:
10
+ * input - current draft text
11
+ * cursor - caret index into `input` (0..input.length)
12
+ * disabled - true while a response is streaming (dims the border)
13
+ * agents - array of agent objects/strings for the picker list
14
+ * pickerOpen - whether the agent picker overlay is visible
15
+ * pickerIndex - highlighted row in the picker
16
+ */
17
+
18
+ import React from 'react';
19
+ import { Box, Text } from 'ink';
20
+ import { colors } from '../theme.js';
21
+
22
+ function agentLabel(a) {
23
+ if (typeof a === 'string') return a;
24
+ return a?.name || a?.display_name || a?.id || String(a);
25
+ }
26
+
27
+ export function ChatInput({
28
+ input = '',
29
+ cursor = 0,
30
+ disabled = false,
31
+ agents = [],
32
+ pickerOpen = false,
33
+ pickerIndex = 0,
34
+ }) {
35
+ const safeCursor = Math.max(0, Math.min(cursor, input.length));
36
+ const pre = input.slice(0, safeCursor);
37
+ const rest = input.slice(safeCursor);
38
+
39
+ return (
40
+ <Box flexDirection="column">
41
+ <Box borderStyle="single" borderColor={disabled ? colors.subtle : colors.primary} paddingX={1}>
42
+ <Text color={colors.cyberBlue}>{'> '}</Text>
43
+ <Text>{pre}</Text>
44
+ <Text color={colors.dim}>{'█'}</Text>
45
+ <Text>{rest}</Text>
46
+ </Box>
47
+
48
+ {pickerOpen && (
49
+ <Box flexDirection="column" borderStyle="round" borderColor={colors.accent} paddingX={1}>
50
+ <Text color={colors.accent} bold>Select agent — Tab/↑↓ move, Enter confirm</Text>
51
+ {agents.length === 0 ? (
52
+ <Text color={colors.dim}>No agents found</Text>
53
+ ) : (
54
+ agents.map((a, i) => (
55
+ <Text
56
+ key={`${agentLabel(a)}-${i}`}
57
+ color={i === pickerIndex ? colors.cyberBlue : colors.textMuted}
58
+ bold={i === pickerIndex}
59
+ >
60
+ {i === pickerIndex ? '➤ ' : ' '}{agentLabel(a)}
61
+ </Text>
62
+ ))
63
+ )}
64
+ </Box>
65
+ )}
66
+ </Box>
67
+ );
68
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Confirm — Confirmation dialog component
3
+ *
4
+ * Shows an inline confirmation prompt with y/n keybindings.
5
+ *
6
+ * Props:
7
+ * message - question text (e.g. "Delete backup XYZ?")
8
+ * onConfirm - called when user presses y
9
+ * onCancel - called when user presses n or Esc
10
+ * active - whether dialog is shown/active (default true)
11
+ */
12
+
13
+ import React from 'react';
14
+ import { Box, Text, useInput } from 'ink';
15
+ import { colors } from '../theme.js';
16
+
17
+ export function Confirm({ message, onConfirm, onCancel, active = true }) {
18
+ useInput((input, key) => {
19
+ if (!active) return;
20
+ if (input === 'y' || input === 'Y') { onConfirm?.(); return; }
21
+ if (input === 'n' || input === 'N' || key.escape) { onCancel?.(); return; }
22
+ }, { isActive: active });
23
+
24
+ if (!active) return null;
25
+
26
+ return (
27
+ <Box borderStyle="single" borderColor={colors.warning} paddingX={2} paddingY={1}>
28
+ <Text color={colors.warning}>{message} </Text>
29
+ <Text color={colors.dim}>(y/n)</Text>
30
+ </Box>
31
+ );
32
+ }