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,347 @@
1
+ /**
2
+ * `quox done` — Quox DoneEngine from the terminal.
3
+ *
4
+ * The house gate is that nothing ships without CLI support, and the north star
5
+ * is Claude running Quox headless. That matters more here than for most
6
+ * surfaces: DoneEngine's primary users are AGENTS, not people. "Is this
7
+ * actually done?" is a question something asks before it acts, so a completion
8
+ * engine reachable only from a dashboard fails its own premise.
9
+ *
10
+ * This is a thin wrapper over the quox-gauge engine rather than a
11
+ * reimplementation. Two implementations of a rule set is how a rule set
12
+ * drifts, which is the thing DoneEngine exists to catch, so there is exactly
13
+ * one engine and the CLI shells out to it.
14
+ *
15
+ * ENGINE RESOLUTION (#456, extended by the fetch follow-on below): defaults
16
+ * to ~/quox-gauge/gauge.mjs, which only ever existed on the box quox-gauge
17
+ * was developed on, so every other dev-enabled host got a bare "not found"
18
+ * error. `quox dev enable` delivers the engine to /opt/quoxgauge and points
19
+ * QUOX_DONEENGINE_PATH at it via the generated CLI wrapper (see
20
+ * devServerRefresh.js), so a fresh dev-enabled host resolves it there
21
+ * without any local checkout.
22
+ *
23
+ * FETCH FOLLOW-ON: enable is correctly human-gated (requireHumanAdmin), so a
24
+ * RESIDENT agent with a missing or stale engine on a host nobody has run
25
+ * `quox dev enable` on had no self-service path — permanently stuck waiting
26
+ * on a human. `quox done fetch` closes that: it pulls the same public bundle
27
+ * (/download/quoxgauge-bundle.tar.gz) directly and installs it, no human in
28
+ * the loop, no new permission (see cli/lib/core/doneEngineFetch.js for the
29
+ * fetch/extract/verify logic). Resolution now also checks a user-local
30
+ * fallback (~/.local/share/quox/gauge/gauge.mjs), which is where fetch lands
31
+ * when /opt/quoxgauge is not writable and there is no passwordless sudo. A
32
+ * missing engine or packs directory names `quox done fetch` first (the
33
+ * self-service fix) and `quox dev enable` second.
34
+ *
35
+ * EXIT CODES are the contract, and `check` passes the engine's through
36
+ * unchanged:
37
+ * 0 CLEAR every gate in the pack passes and the running code agrees
38
+ * 1 REFUSED a named gate fails; reasons are printed
39
+ * 2 UNKNOWN insufficient evidence to say either way
40
+ *
41
+ * UNKNOWN is deliberately not folded into either neighbour. Treating "no
42
+ * evidence" as approval is the exact failure this engine was built after, and
43
+ * treating it as refusal trains people to ignore refusals.
44
+ *
45
+ * ADVISORY. `quox done check` never blocks anything. Whether DoneEngine may
46
+ * refuse a deploy is an open owner decision on the DONEENGINE stream, and a
47
+ * tool that started refusing other people's deploys before that was settled
48
+ * would be taking a governance power nobody granted it.
49
+ */
50
+
51
+ import { spawnSync } from 'node:child_process';
52
+ import fs from 'node:fs';
53
+ import os from 'node:os';
54
+ import path from 'node:path';
55
+ import {
56
+ resolveFetchDestination,
57
+ fetchEngine,
58
+ inspectInstall,
59
+ OPT_GAUGE_DIR,
60
+ userLocalGaugeDir,
61
+ legacyGaugeDir,
62
+ } from '../core/doneEngineFetch.js';
63
+ import { printSuccess, printInfo } from '../core/output.js';
64
+
65
+ /**
66
+ * Engine resolution order (see the FETCH FOLLOW-ON note above):
67
+ * 1. QUOX_DONEENGINE_PATH (explicit override, wins even if the file is
68
+ * missing — the honest "not found" error below still needs a concrete
69
+ * path to name)
70
+ * 2. /opt/quoxgauge/gauge.mjs — where `quox dev enable` and a sudo-capable
71
+ * `quox done fetch` both put it
72
+ * 3. ~/.local/share/quox/gauge/gauge.mjs — where `quox done fetch` puts it
73
+ * when /opt/quoxgauge is not writable and there is no passwordless sudo
74
+ * 4. ~/quox-gauge/gauge.mjs — legacy default, kept as the final fallback so
75
+ * the error message always names a concrete path
76
+ *
77
+ * Exported (rather than inlined into the ENGINE constant) so this order is
78
+ * unit-testable with an injected existsSync/env/home instead of the real
79
+ * filesystem.
80
+ */
81
+ export function resolveEnginePath({ env = process.env, existsSync = fs.existsSync, home = os.homedir() } = {}) {
82
+ if (env.QUOX_DONEENGINE_PATH) return env.QUOX_DONEENGINE_PATH;
83
+ const optPath = path.join(OPT_GAUGE_DIR, 'gauge.mjs');
84
+ if (existsSync(optPath)) return optPath;
85
+ const userLocalPath = path.join(userLocalGaugeDir(home), 'gauge.mjs');
86
+ if (existsSync(userLocalPath)) return userLocalPath;
87
+ return path.join(legacyGaugeDir(home), 'gauge.mjs');
88
+ }
89
+
90
+ const ENGINE = resolveEnginePath();
91
+
92
+ function engineMissingMessage(engine) {
93
+ return `DoneEngine not found at ${engine}\n`
94
+ + 'Self-heal: `quox done fetch` pulls the engine bundle straight from '
95
+ + 'the collector, no human in the loop. Otherwise `quox dev enable` '
96
+ + 'delivers it to /opt/quoxgauge as part of full dev-server '
97
+ + 'provisioning. Or set QUOX_DONEENGINE_PATH to a checkout.\n';
98
+ }
99
+
100
+ function runEngine(args, engine = ENGINE) {
101
+ if (!fs.existsSync(engine)) {
102
+ process.stderr.write(engineMissingMessage(engine));
103
+ // 2, not 1: a missing engine is "cannot tell", not "refused".
104
+ return 2;
105
+ }
106
+ const r = spawnSync(process.execPath, [engine, ...args], { stdio: 'inherit' });
107
+ if (r.error) {
108
+ process.stderr.write(`DoneEngine failed to run: ${r.error.message}\n`);
109
+ return 2;
110
+ }
111
+ return r.status ?? 2;
112
+ }
113
+
114
+ /**
115
+ * VISIBILITY GATE (#988 follow-on). Public installs do not ship DoneEngine
116
+ * (its bundle is built from the private quox-gauge repo and delivered to dev
117
+ * servers by `quox dev enable`), so listing `quox done` in their help
118
+ * advertises a command that can only fail. It is listed only when an engine
119
+ * is installed locally, decided from the filesystem alone with the same
120
+ * resolution the runner uses: building help never makes a network call.
121
+ * QUOX_HELP_INCLUDE_GATED=1 lists it regardless; the generators that scrape
122
+ * `--help` into the command trees set it so those trees do not depend on
123
+ * which host ran them.
124
+ */
125
+ export function isDoneEngineInstalled({ env = process.env, home = os.homedir(), fsOps } = {}) {
126
+ const ops = fsOps || { existsSync: fs.existsSync, readdirSync: fs.readdirSync };
127
+ const engine = resolveEnginePath({ env, existsSync: ops.existsSync, home });
128
+ return inspectInstall(path.dirname(engine), ops).healthy;
129
+ }
130
+
131
+ function defaultExecFn(cmd, args) {
132
+ return spawnSync(cmd, args, { encoding: 'utf8' });
133
+ }
134
+
135
+ function defaultIsWritable(dir) {
136
+ let probe = dir;
137
+ while (!fs.existsSync(probe)) {
138
+ const parent = path.dirname(probe);
139
+ if (parent === probe) break;
140
+ probe = parent;
141
+ }
142
+ try {
143
+ fs.accessSync(probe, fs.constants.W_OK);
144
+ return true;
145
+ } catch {
146
+ return false;
147
+ }
148
+ }
149
+
150
+ function defaultFsOps() {
151
+ return {
152
+ existsSync: fs.existsSync,
153
+ readdirSync: fs.readdirSync,
154
+ writeFileSync: fs.writeFileSync,
155
+ rmSync: fs.rmSync,
156
+ isWritable: defaultIsWritable,
157
+ mkdtemp: () => fs.mkdtempSync(path.join(os.tmpdir(), 'quoxgauge-backup-')),
158
+ tmpFile: () => path.join(os.tmpdir(), `quoxgauge-bundle-${process.pid}-${Date.now()}.tar.gz`),
159
+ };
160
+ }
161
+
162
+ export function registerDoneCommands(program, ctx = {}) {
163
+ const env = ctx.env || process.env;
164
+ const home = ctx.home || os.homedir();
165
+ // Tests inject fsOps/env/home; the real CLI keeps the import-time ENGINE.
166
+ const injected = !!(ctx.fsOps || ctx.env || ctx.home);
167
+ const currentEngine = () => (injected
168
+ ? resolveEnginePath({ env, existsSync: (ctx.fsOps || fs).existsSync, home })
169
+ : ENGINE);
170
+ const visible = env.QUOX_HELP_INCLUDE_GATED === '1'
171
+ || isDoneEngineInstalled({ env, home, fsOps: ctx.fsOps });
172
+
173
+ const fetchDeps = () => ({
174
+ execFn: ctx.execFn || defaultExecFn,
175
+ isWritable: ctx.isWritable || defaultIsWritable,
176
+ fsOps: ctx.fsOps || defaultFsOps(),
177
+ });
178
+
179
+ /**
180
+ * Resolve a runnable engine for a subcommand. Present: use it, no network.
181
+ * Absent: try the existing fetch path once. A collector 404
182
+ * (DONEENGINE_NOT_SHIPPED) means this is a public install: refuse with that
183
+ * message and exit 2, having changed nothing. A bundle that IS available
184
+ * (a dev collector) installs and the freshly fetched engine runs.
185
+ */
186
+ async function ensureEngine() {
187
+ const engine = currentEngine();
188
+ const exists = (ctx.fsOps || fs).existsSync(engine);
189
+ if (exists || !ctx.client || env.QUOX_DONEENGINE_PATH) return { engine };
190
+ const { execFn, isWritable, fsOps } = fetchDeps();
191
+ const { dest, needsSudo } = resolveFetchDestination({ env, isWritable, execFn });
192
+ try {
193
+ await fetchEngine({ dest, needsSudo, force: false, client: ctx.client, execFn, fsOps });
194
+ return { engine: path.join(dest, 'gauge.mjs') };
195
+ } catch (err) {
196
+ if (err.code === 'DONEENGINE_NOT_SHIPPED') {
197
+ process.stderr.write(`quox done: ${err.message}\n`);
198
+ return { code: 2 };
199
+ }
200
+ process.stderr.write(`quox done: engine fetch failed: ${err.message}\n`);
201
+ return { engine };
202
+ }
203
+ }
204
+
205
+ async function runGuarded(args) {
206
+ const r = await ensureEngine();
207
+ if (r.code !== undefined) return r.code;
208
+ return runEngine(args, r.engine);
209
+ }
210
+
211
+ const done = program
212
+ .command('done', { hidden: !visible })
213
+ .description('Quox DoneEngine: is this actually done, and what is the evidence?');
214
+
215
+ done
216
+ .command('check [subject]')
217
+ .description('Can this ship? exit 0 clear, 1 refused with reasons, 2 unknown. Advisory: never blocks.')
218
+ .option('--pack <id>', 'rule pack to judge against', 'launch-spine')
219
+ .option('--json', 'structured verdict for agents')
220
+ .option('--root <path>', 'judge <subject> in this repo, reading its own STATUS map with the selected pack (e.g. a plugin with --pack plugin)')
221
+ .action(async (subject, options) => {
222
+ const args = ['--can-ship', subject || 'all', '--pack', options.pack];
223
+ if (options.root) {
224
+ if (!subject) {
225
+ process.stderr.write('quox done check: --root needs a subject (the surface to judge in that repo).\n');
226
+ process.exitCode = 2;
227
+ return;
228
+ }
229
+ args.push('--subject', subject, '--root', path.resolve(options.root));
230
+ }
231
+ if (options.json) args.push('--json');
232
+ process.exitCode = await runGuarded(args);
233
+ });
234
+
235
+ done
236
+ .command('checklist [pack]')
237
+ .description('The builder checklist GENERATED from a pack (every gate the engine judges); --check verifies a doc that embeds it')
238
+ .option('--check <file>', 'exit 1 if the checklist block in this file has drifted from the pack')
239
+ .action(async (pack, options) => {
240
+ const args = ['--checklist', pack || 'plugin'];
241
+ if (options.check) args.push('--check', path.resolve(options.check));
242
+ process.exitCode = await runGuarded(args);
243
+ });
244
+
245
+ done
246
+ .command('board')
247
+ .description('Estate scoreboard: every surface, score, attested gates, deploy state')
248
+ .option('--json', 'machine-readable, includes raw deploy state')
249
+ .option('--dod', 'per-surface gates, split by evidence class')
250
+ .option('--no-deploy', 'skip docker/git; Deployed Ready becomes unknown, which is not a pass')
251
+ .action(async (options) => {
252
+ const args = [];
253
+ if (options.json) args.push('--json');
254
+ if (options.dod) args.push('--dod');
255
+ if (options.deploy === false) args.push('--no-deploy');
256
+ process.exitCode = await runGuarded(args);
257
+ });
258
+
259
+ done
260
+ .command('bar [pack]')
261
+ .description('One rule pack against its subjects: BOTH finish lines, build and deployed')
262
+ .option('--snapshot', 'append this reading to the snapshot history')
263
+ .option('--org <id>', 'measure FOR this org: plan evidence reads as it, the snapshot is stamped with it (default: the pack\'s own org field)')
264
+ .action(async (pack, options) => {
265
+ const args = pack ? ['--pack', pack] : ['--launch'];
266
+ if (options.snapshot) args.push('--snapshot');
267
+ if (options.org) args.push('--org', options.org);
268
+ process.exitCode = await runGuarded(args);
269
+ });
270
+
271
+ done
272
+ .command('history [pack]')
273
+ .description('Movement between snapshots, regressions listed first')
274
+ .action(async (pack) => {
275
+ process.exitCode = await runGuarded(pack ? ['--history', '--pack', pack] : ['--history']);
276
+ });
277
+
278
+ done
279
+ .command('packs')
280
+ .description('List available rule packs')
281
+ .action(async () => {
282
+ const r = await ensureEngine();
283
+ if (r.code !== undefined) { process.exitCode = r.code; return; }
284
+ const dir = path.join(path.dirname(r.engine), 'packs');
285
+ if (!fs.existsSync(dir)) {
286
+ process.stderr.write(
287
+ `No packs directory at ${dir}\n` +
288
+ 'This usually means the engine delivery is missing or stale. ' +
289
+ 'Run `quox done fetch` to self-heal it (no human needed), or ' +
290
+ 're-run `quox dev enable`, or set QUOX_DONEENGINE_PATH to a ' +
291
+ 'checkout that has one.\n',
292
+ );
293
+ process.exitCode = 2;
294
+ return;
295
+ }
296
+ for (const f of fs.readdirSync(dir).filter((x) => x.endsWith('.json')).sort()) {
297
+ try {
298
+ const p = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf8'));
299
+ const scoped = p.subjects ? `${p.subjects.length} subjects` : 'base pack';
300
+ process.stdout.write(`${(p.id || f).padEnd(16)} v${p.version || '?'} ${scoped} ${p.name || ''}\n`);
301
+ } catch {
302
+ process.stdout.write(`${f} (unreadable)\n`);
303
+ }
304
+ }
305
+ });
306
+
307
+ done
308
+ .command('fetch')
309
+ .description('Self-fetch the DoneEngine bundle, no human in the loop (quox#456 follow-on)')
310
+ .option('--dest <path>', 'install destination (default: $QUOX_DONEENGINE_HOME, else /opt/quoxgauge if writable/sudo-reachable, else ~/.local/share/quox/gauge)')
311
+ .option('--force', 'refetch and reinstall even if the current install already looks healthy')
312
+ .action(async (options) => {
313
+ const client = ctx.client;
314
+ if (!client) {
315
+ process.stderr.write('quox done fetch: no HTTP client available in this context.\n');
316
+ process.exitCode = 2;
317
+ return;
318
+ }
319
+ const { execFn, isWritable, fsOps } = fetchDeps();
320
+
321
+ const { dest, reason, needsSudo } = resolveFetchDestination({
322
+ destOption: options.dest,
323
+ env,
324
+ isWritable,
325
+ execFn,
326
+ });
327
+ process.stdout.write(`Destination: ${dest} (${reason})\n`);
328
+
329
+ try {
330
+ const result = await fetchEngine({ dest, needsSudo, force: !!options.force, client, execFn, fsOps });
331
+ if (result.status === 'noop') {
332
+ printInfo(result.message);
333
+ } else {
334
+ printSuccess(result.message);
335
+ }
336
+ } catch (err) {
337
+ process.stderr.write(`quox done fetch failed: ${err.message}\n`);
338
+ // A public install's 404 is "this install has no DoneEngine", not a
339
+ // transient failure: exit 2 like every other "cannot tell" here.
340
+ process.exitCode = err.code === 'DONEENGINE_NOT_SHIPPED' ? 2 : 1;
341
+ }
342
+ });
343
+
344
+ return done;
345
+ }
346
+
347
+ export default registerDoneCommands;