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.
- package/LICENSE +35 -0
- package/README.md +144 -2
- package/bin/quox.js +265 -0
- package/bin/quoxon.js +8 -0
- package/lib/api/endpoints/admin.js +151 -0
- package/lib/api/endpoints/aee.js +38 -0
- package/lib/api/endpoints/agent-attach.js +126 -0
- package/lib/api/endpoints/agent-schedules.js +26 -0
- package/lib/api/endpoints/agents.js +63 -0
- package/lib/api/endpoints/assistants.js +62 -0
- package/lib/api/endpoints/audit.js +14 -0
- package/lib/api/endpoints/auth.js +50 -0
- package/lib/api/endpoints/awareness.js +34 -0
- package/lib/api/endpoints/away.js +15 -0
- package/lib/api/endpoints/backup-schedules.js +20 -0
- package/lib/api/endpoints/backups.js +86 -0
- package/lib/api/endpoints/brain.js +140 -0
- package/lib/api/endpoints/budgets.js +62 -0
- package/lib/api/endpoints/calendarq.js +71 -0
- package/lib/api/endpoints/catalog.js +14 -0
- package/lib/api/endpoints/chat.js +61 -0
- package/lib/api/endpoints/consent.js +26 -0
- package/lib/api/endpoints/contactsq.js +68 -0
- package/lib/api/endpoints/conversations.js +46 -0
- package/lib/api/endpoints/custom-roles.js +92 -0
- package/lib/api/endpoints/divisions.js +56 -0
- package/lib/api/endpoints/domains.js +38 -0
- package/lib/api/endpoints/engagement.js +231 -0
- package/lib/api/endpoints/engine.js +11 -0
- package/lib/api/endpoints/entity.js +50 -0
- package/lib/api/endpoints/executions.js +45 -0
- package/lib/api/endpoints/fetchAllowlist.js +27 -0
- package/lib/api/endpoints/file.js +20 -0
- package/lib/api/endpoints/files.js +40 -0
- package/lib/api/endpoints/github.js +21 -0
- package/lib/api/endpoints/governance.js +43 -0
- package/lib/api/endpoints/hat.js +66 -0
- package/lib/api/endpoints/inbox.js +52 -0
- package/lib/api/endpoints/inboxq.js +120 -0
- package/lib/api/endpoints/index.js +242 -0
- package/lib/api/endpoints/invites.js +19 -0
- package/lib/api/endpoints/llm-policy.js +43 -0
- package/lib/api/endpoints/lucid.js +89 -0
- package/lib/api/endpoints/members.js +32 -0
- package/lib/api/endpoints/memory.js +94 -0
- package/lib/api/endpoints/mfa.js +32 -0
- package/lib/api/endpoints/mind.js +13 -0
- package/lib/api/endpoints/mon.js +184 -0
- package/lib/api/endpoints/notesq.js +43 -0
- package/lib/api/endpoints/objectives.js +68 -0
- package/lib/api/endpoints/orgs.js +38 -0
- package/lib/api/endpoints/plugins.js +152 -0
- package/lib/api/endpoints/powers.js +75 -0
- package/lib/api/endpoints/presence.js +33 -0
- package/lib/api/endpoints/prompts.js +69 -0
- package/lib/api/endpoints/qlarity.js +122 -0
- package/lib/api/endpoints/quoxbox.js +55 -0
- package/lib/api/endpoints/quoxchat.js +54 -0
- package/lib/api/endpoints/quoxflow.js +32 -0
- package/lib/api/endpoints/quoxplan.js +121 -0
- package/lib/api/endpoints/quoxseo.js +114 -0
- package/lib/api/endpoints/reach.js +47 -0
- package/lib/api/endpoints/router.js +17 -0
- package/lib/api/endpoints/runs.js +38 -0
- package/lib/api/endpoints/safety.js +53 -0
- package/lib/api/endpoints/scim.js +46 -0
- package/lib/api/endpoints/scopes.js +14 -0
- package/lib/api/endpoints/security.js +69 -0
- package/lib/api/endpoints/setup.js +90 -0
- package/lib/api/endpoints/skills.js +200 -0
- package/lib/api/endpoints/sso.js +67 -0
- package/lib/api/endpoints/stepup.js +20 -0
- package/lib/api/endpoints/tags.js +32 -0
- package/lib/api/endpoints/teams.js +56 -0
- package/lib/api/endpoints/telephony.js +46 -0
- package/lib/api/endpoints/tg.js +56 -0
- package/lib/api/endpoints/tools.js +50 -0
- package/lib/api/endpoints/traces.js +157 -0
- package/lib/api/endpoints/triggers.js +96 -0
- package/lib/api/endpoints/user-library.js +41 -0
- package/lib/api/endpoints/users.js +20 -0
- package/lib/api/endpoints/v1.js +585 -0
- package/lib/api/endpoints/vault.js +192 -0
- package/lib/api/endpoints/voice.js +22 -0
- package/lib/api/endpoints/volt.js +84 -0
- package/lib/api/endpoints/ward.js +47 -0
- package/lib/api/endpoints/webhooks.js +46 -0
- package/lib/api/endpoints/workflows.js +169 -0
- package/lib/api/endpoints/x.js +32 -0
- package/lib/api/endpoints.js +15 -0
- package/lib/commands/actions.js +61 -0
- package/lib/commands/admin.js +375 -0
- package/lib/commands/aee.js +99 -0
- package/lib/commands/agent.js +337 -0
- package/lib/commands/agentAttach.js +1528 -0
- package/lib/commands/approvals.js +119 -0
- package/lib/commands/aside.js +24 -0
- package/lib/commands/ask.js +144 -0
- package/lib/commands/assistant.js +169 -0
- package/lib/commands/auth.js +464 -0
- package/lib/commands/awareness.js +88 -0
- package/lib/commands/backup.js +377 -0
- package/lib/commands/brain.js +1085 -0
- package/lib/commands/budget.js +241 -0
- package/lib/commands/build.js +170 -0
- package/lib/commands/calendar.js +216 -0
- package/lib/commands/capabilities.js +34 -0
- package/lib/commands/chat.js +295 -0
- package/lib/commands/claude.js +380 -0
- package/lib/commands/config-cmd.js +106 -0
- package/lib/commands/consent.js +84 -0
- package/lib/commands/contacts.js +1016 -0
- package/lib/commands/contactsSelftest.js +132 -0
- package/lib/commands/conversation.js +105 -0
- package/lib/commands/dashboard.js +43 -0
- package/lib/commands/department.js +96 -0
- package/lib/commands/dev.js +620 -0
- package/lib/commands/devResident.js +326 -0
- package/lib/commands/devSupervisor.js +1062 -0
- package/lib/commands/discord.js +132 -0
- package/lib/commands/doctor.js +181 -0
- package/lib/commands/domain.js +114 -0
- package/lib/commands/done.js +347 -0
- package/lib/commands/engagement.js +597 -0
- package/lib/commands/entity.js +119 -0
- package/lib/commands/facebook.js +212 -0
- package/lib/commands/fetchAllowlist.js +71 -0
- package/lib/commands/file.js +165 -0
- package/lib/commands/fleet.js +1189 -0
- package/lib/commands/governance.js +647 -0
- package/lib/commands/gripe.js +355 -0
- package/lib/commands/hat.js +374 -0
- package/lib/commands/helpers.js +96 -0
- package/lib/commands/hyperion.js +58 -0
- package/lib/commands/inbox.js +173 -0
- package/lib/commands/instagram.js +264 -0
- package/lib/commands/integration.js +100 -0
- package/lib/commands/inventory.js +115 -0
- package/lib/commands/invites.js +45 -0
- package/lib/commands/licence.js +139 -0
- package/lib/commands/linkedin.js +178 -0
- package/lib/commands/llm-policy.js +117 -0
- package/lib/commands/llm.js +45 -0
- package/lib/commands/lucid.js +597 -0
- package/lib/commands/mail.js +531 -0
- package/lib/commands/memory.js +361 -0
- package/lib/commands/mind.js +71 -0
- package/lib/commands/mon.js +581 -0
- package/lib/commands/monitoring.js +86 -0
- package/lib/commands/motion.js +22 -0
- package/lib/commands/notes.js +1246 -0
- package/lib/commands/notesBatch.js +160 -0
- package/lib/commands/notesBridges.js +56 -0
- package/lib/commands/notesLinks.js +60 -0
- package/lib/commands/notification.js +57 -0
- package/lib/commands/nucleus.js +123 -0
- package/lib/commands/objective.js +240 -0
- package/lib/commands/offload.js +89 -0
- package/lib/commands/onboard.js +329 -0
- package/lib/commands/open.js +56 -0
- package/lib/commands/org.js +276 -0
- package/lib/commands/peek.js +28 -0
- package/lib/commands/plan.js +944 -0
- package/lib/commands/plugin-doctor.js +1091 -0
- package/lib/commands/plugin.js +649 -0
- package/lib/commands/policy.js +78 -0
- package/lib/commands/powers.js +296 -0
- package/lib/commands/presence.js +89 -0
- package/lib/commands/prompt.js +350 -0
- package/lib/commands/provider.js +159 -0
- package/lib/commands/qlarity.js +706 -0
- package/lib/commands/quoxbox.js +270 -0
- package/lib/commands/quoxchat.js +275 -0
- package/lib/commands/quoxseo.js +378 -0
- package/lib/commands/reach.js +159 -0
- package/lib/commands/role.js +286 -0
- package/lib/commands/router.js +77 -0
- package/lib/commands/rows.js +358 -0
- package/lib/commands/run.js +187 -0
- package/lib/commands/safety.js +107 -0
- package/lib/commands/scim.js +88 -0
- package/lib/commands/scope.js +58 -0
- package/lib/commands/security.js +157 -0
- package/lib/commands/server.js +292 -0
- package/lib/commands/service.js +89 -0
- package/lib/commands/settings.js +99 -0
- package/lib/commands/setup.js +569 -0
- package/lib/commands/skillManifest.js +113 -0
- package/lib/commands/skillRightsFormat.js +38 -0
- package/lib/commands/skills.js +687 -0
- package/lib/commands/slot.js +1451 -0
- package/lib/commands/sso.js +229 -0
- package/lib/commands/status.js +137 -0
- package/lib/commands/tag.js +91 -0
- package/lib/commands/team.js +142 -0
- package/lib/commands/tg.js +240 -0
- package/lib/commands/tiktok.js +218 -0
- package/lib/commands/tips.js +23 -0
- package/lib/commands/tool.js +304 -0
- package/lib/commands/trace.js +530 -0
- package/lib/commands/trigger.js +223 -0
- package/lib/commands/update.js +46 -0
- package/lib/commands/vault.js +1447 -0
- package/lib/commands/vm.js +237 -0
- package/lib/commands/voice.js +213 -0
- package/lib/commands/volt.js +570 -0
- package/lib/commands/walkthrough.js +32 -0
- package/lib/commands/watch.js +167 -0
- package/lib/commands/webhook.js +137 -0
- package/lib/commands/welcome.js +14 -0
- package/lib/commands/workflow.js +660 -0
- package/lib/commands/x.js +448 -0
- package/lib/core/actingAs.js +136 -0
- package/lib/core/activeSummary.js +186 -0
- package/lib/core/aee.js +53 -0
- package/lib/core/agentAlias.js +163 -0
- package/lib/core/approvalContext.js +61 -0
- package/lib/core/aside.js +54 -0
- package/lib/core/askDecision.js +60 -0
- package/lib/core/auth.js +501 -0
- package/lib/core/banner.js +143 -0
- package/lib/core/brainPrime.js +90 -0
- package/lib/core/callerSource.js +129 -0
- package/lib/core/claudeLs.js +94 -0
- package/lib/core/cliBuild.js +62 -0
- package/lib/core/client.js +693 -0
- package/lib/core/commandRegistrars.js +121 -0
- package/lib/core/completions.js +163 -0
- package/lib/core/config.js +669 -0
- package/lib/core/confirm.js +37 -0
- package/lib/core/customHats.js +168 -0
- package/lib/core/deeplinks.js +76 -0
- package/lib/core/doneEngineFetch.js +227 -0
- package/lib/core/errors.js +441 -0
- package/lib/core/global-flags.js +190 -0
- package/lib/core/governedSession.js +402 -0
- package/lib/core/hyperion.js +102 -0
- package/lib/core/inboxResolution.js +65 -0
- package/lib/core/lazyCommands.js +122 -0
- package/lib/core/liveSessionsReport.js +112 -0
- package/lib/core/offload.js +504 -0
- package/lib/core/org-override.js +52 -0
- package/lib/core/orgResolve.js +70 -0
- package/lib/core/output.js +239 -0
- package/lib/core/peek.js +126 -0
- package/lib/core/prodEnv.js +7 -0
- package/lib/core/profileUsers.js +51 -0
- package/lib/core/promptCancel.js +18 -0
- package/lib/core/quoxglyph.js +158 -0
- package/lib/core/repoPath.js +11 -0
- package/lib/core/residentAlarm.js +282 -0
- package/lib/core/residentAuth.js +243 -0
- package/lib/core/residentPump.js +229 -0
- package/lib/core/residentSeed.js +106 -0
- package/lib/core/rootOptions.js +39 -0
- package/lib/core/router.js +168 -0
- package/lib/core/selfUpdate.js +188 -0
- package/lib/core/sessionHeartbeat.js +192 -0
- package/lib/core/sessionsOverview.js +224 -0
- package/lib/core/slotKeeper.js +527 -0
- package/lib/core/slotWake.js +120 -0
- package/lib/core/supervisorEngine.js +933 -0
- package/lib/core/systemdInstaller.js +256 -0
- package/lib/core/version.js +87 -0
- package/lib/core/vm.js +361 -0
- package/lib/core/vmTui.js +86 -0
- package/lib/core/walkthrough.js +35 -0
- package/lib/hyperion/deck.js +29 -0
- package/lib/lucid/LucidCard.jsx +68 -0
- package/lib/lucid/LucidIntro.jsx +92 -0
- package/lib/lucid/blind.js +71 -0
- package/lib/lucid/cards.js +86 -0
- package/lib/lucid/deck.js +32 -0
- package/lib/lucid/fmt.js +139 -0
- package/lib/lucid/markdown.js +81 -0
- package/lib/lucid/motion.js +56 -0
- package/lib/lucid/sitrep.js +173 -0
- package/lib/plugins/loader.js +93 -0
- package/lib/quoxon/activity.js +116 -0
- package/lib/quoxon/aocl.js +117 -0
- package/lib/quoxon/api.js +952 -0
- package/lib/quoxon/app.js +4032 -0
- package/lib/quoxon/approvalFacts.js +94 -0
- package/lib/quoxon/approvalsView.js +325 -0
- package/lib/quoxon/asideView.js +40 -0
- package/lib/quoxon/ask.js +121 -0
- package/lib/quoxon/away.js +52 -0
- package/lib/quoxon/bang.js +224 -0
- package/lib/quoxon/bulkRisk.js +17 -0
- package/lib/quoxon/capabilities.js +82 -0
- package/lib/quoxon/cells.js +53 -0
- package/lib/quoxon/commandShort.js +112 -0
- package/lib/quoxon/commands.js +479 -0
- package/lib/quoxon/connect.js +654 -0
- package/lib/quoxon/connectCard.js +45 -0
- package/lib/quoxon/consent.js +86 -0
- package/lib/quoxon/context.js +68 -0
- package/lib/quoxon/copy.js +34 -0
- package/lib/quoxon/countdownLine.js +11 -0
- package/lib/quoxon/demo.autoplay.js +29 -0
- package/lib/quoxon/demo.fixtures.js +24 -0
- package/lib/quoxon/demo.js +76 -0
- package/lib/quoxon/devObserver.js +20 -0
- package/lib/quoxon/dividerAocl.js +191 -0
- package/lib/quoxon/dividerRule.js +57 -0
- package/lib/quoxon/dragonModes.js +150 -0
- package/lib/quoxon/dragonView.js +41 -0
- package/lib/quoxon/earlyInput.js +40 -0
- package/lib/quoxon/echo.js +15 -0
- package/lib/quoxon/egg.js +36 -0
- package/lib/quoxon/events.js +677 -0
- package/lib/quoxon/feedback.js +50 -0
- package/lib/quoxon/gallery.js +237 -0
- package/lib/quoxon/handoffOffer.js +78 -0
- package/lib/quoxon/hatSwitch.js +37 -0
- package/lib/quoxon/headless.js +161 -0
- package/lib/quoxon/hostUrls.js +41 -0
- package/lib/quoxon/indicator.js +197 -0
- package/lib/quoxon/intent.js +52 -0
- package/lib/quoxon/keys.js +164 -0
- package/lib/quoxon/launcher.js +103 -0
- package/lib/quoxon/main.js +176 -0
- package/lib/quoxon/markdown.js +341 -0
- package/lib/quoxon/markdownSettle.js +19 -0
- package/lib/quoxon/matrixDomains.json +46 -0
- package/lib/quoxon/mentions.js +90 -0
- package/lib/quoxon/mind.js +103 -0
- package/lib/quoxon/mode.js +46 -0
- package/lib/quoxon/model.js +311 -0
- package/lib/quoxon/modelPrefs.js +345 -0
- package/lib/quoxon/motion/clock.js +70 -0
- package/lib/quoxon/motion/color.js +35 -0
- package/lib/quoxon/motion/frame.js +14 -0
- package/lib/quoxon/motion/level.js +91 -0
- package/lib/quoxon/motion/reveal.js +54 -0
- package/lib/quoxon/motion/ring.js +79 -0
- package/lib/quoxon/mouse.js +211 -0
- package/lib/quoxon/noai.js +57 -0
- package/lib/quoxon/objects/agent.js +61 -0
- package/lib/quoxon/objects/away.js +72 -0
- package/lib/quoxon/objects/crystal.js +100 -0
- package/lib/quoxon/objects/fetch.js +182 -0
- package/lib/quoxon/objects/fleet.js +149 -0
- package/lib/quoxon/objects/health.js +186 -0
- package/lib/quoxon/objects/index.js +106 -0
- package/lib/quoxon/objects/ladder.js +71 -0
- package/lib/quoxon/objects/memory.js +44 -0
- package/lib/quoxon/objects/mirror.js +137 -0
- package/lib/quoxon/objects/model.js +118 -0
- package/lib/quoxon/objects/peek.js +17 -0
- package/lib/quoxon/objects/proof.js +110 -0
- package/lib/quoxon/objects/prove.js +130 -0
- package/lib/quoxon/objects/replay.js +125 -0
- package/lib/quoxon/objects/sitrep.js +58 -0
- package/lib/quoxon/objects/skill.js +105 -0
- package/lib/quoxon/objects/view.js +87 -0
- package/lib/quoxon/objects/workflow.js +119 -0
- package/lib/quoxon/observers.js +42 -0
- package/lib/quoxon/onboarding/copy.js +263 -0
- package/lib/quoxon/onboarding/credential.js +108 -0
- package/lib/quoxon/onboarding/detect.js +22 -0
- package/lib/quoxon/onboarding/dockerOffer.js +45 -0
- package/lib/quoxon/onboarding/failureCause.js +33 -0
- package/lib/quoxon/onboarding/finish.js +134 -0
- package/lib/quoxon/onboarding/index.js +94 -0
- package/lib/quoxon/onboarding/installRunner.js +284 -0
- package/lib/quoxon/onboarding/intent.js +53 -0
- package/lib/quoxon/onboarding/journey.js +73 -0
- package/lib/quoxon/onboarding/preflight.js +156 -0
- package/lib/quoxon/onboarding/probe.js +65 -0
- package/lib/quoxon/onboarding/runner.js +58 -0
- package/lib/quoxon/onboarding/view.js +682 -0
- package/lib/quoxon/orgLabel.js +10 -0
- package/lib/quoxon/orgSwitch.js +33 -0
- package/lib/quoxon/ownBroadcast.js +22 -0
- package/lib/quoxon/palette.js +43 -0
- package/lib/quoxon/print.js +98 -0
- package/lib/quoxon/profileSwitch.js +53 -0
- package/lib/quoxon/promptHistory.js +41 -0
- package/lib/quoxon/providers.js +48 -0
- package/lib/quoxon/qart.js +348 -0
- package/lib/quoxon/qdragon.js +410 -0
- package/lib/quoxon/qdragonFly.js +61 -0
- package/lib/quoxon/qdragonScenes.js +282 -0
- package/lib/quoxon/qeyes.js +213 -0
- package/lib/quoxon/qglyph.js +143 -0
- package/lib/quoxon/qhello.js +58 -0
- package/lib/quoxon/qmotion.js +132 -0
- package/lib/quoxon/render.js +1167 -0
- package/lib/quoxon/resend.js +72 -0
- package/lib/quoxon/roster.js +307 -0
- package/lib/quoxon/route.js +39 -0
- package/lib/quoxon/rows.js +711 -0
- package/lib/quoxon/rowsStore.js +80 -0
- package/lib/quoxon/rules.js +130 -0
- package/lib/quoxon/screenContext.js +150 -0
- package/lib/quoxon/screenFrames.js +254 -0
- package/lib/quoxon/session.js +238 -0
- package/lib/quoxon/sessionDead.js +17 -0
- package/lib/quoxon/signin.js +125 -0
- package/lib/quoxon/skills.js +30 -0
- package/lib/quoxon/slash/agents.js +112 -0
- package/lib/quoxon/slash/argSources.js +65 -0
- package/lib/quoxon/slash/args.js +65 -0
- package/lib/quoxon/slash/automate.js +89 -0
- package/lib/quoxon/slash/broadcast.js +140 -0
- package/lib/quoxon/slash/broadcastRun.js +108 -0
- package/lib/quoxon/slash/card.js +30 -0
- package/lib/quoxon/slash/challenge.js +114 -0
- package/lib/quoxon/slash/cliCommand.js +53 -0
- package/lib/quoxon/slash/cliLeaves.json +948 -0
- package/lib/quoxon/slash/compact.js +90 -0
- package/lib/quoxon/slash/confirm.js +30 -0
- package/lib/quoxon/slash/crystallize.js +69 -0
- package/lib/quoxon/slash/dashboard.js +136 -0
- package/lib/quoxon/slash/draft.js +54 -0
- package/lib/quoxon/slash/hatWalk.js +206 -0
- package/lib/quoxon/slash/inverses.js +77 -0
- package/lib/quoxon/slash/killer.js +24 -0
- package/lib/quoxon/slash/killerApi.js +16 -0
- package/lib/quoxon/slash/ledger.js +88 -0
- package/lib/quoxon/slash/listView.js +30 -0
- package/lib/quoxon/slash/modelCmd.js +261 -0
- package/lib/quoxon/slash/palette.js +118 -0
- package/lib/quoxon/slash/paletteController.js +169 -0
- package/lib/quoxon/slash/panels.js +116 -0
- package/lib/quoxon/slash/picker.js +56 -0
- package/lib/quoxon/slash/restart.js +202 -0
- package/lib/quoxon/slash/resume.js +59 -0
- package/lib/quoxon/slash/rowCmd.js +157 -0
- package/lib/quoxon/slash/rowWalk.js +175 -0
- package/lib/quoxon/slash/settings.js +60 -0
- package/lib/quoxon/slash/spawn.js +177 -0
- package/lib/quoxon/slash/stepUp.js +274 -0
- package/lib/quoxon/slash/stepUpCard.js +60 -0
- package/lib/quoxon/slash/stepUpCmds.js +78 -0
- package/lib/quoxon/slash/undoApi.js +38 -0
- package/lib/quoxon/slash/undoCmd.js +49 -0
- package/lib/quoxon/slash/undoWish.js +15 -0
- package/lib/quoxon/slash/watch.js +164 -0
- package/lib/quoxon/slash/wish.js +23 -0
- package/lib/quoxon/slash/wishCmd.js +32 -0
- package/lib/quoxon/slotChat.js +300 -0
- package/lib/quoxon/slotFormat.js +195 -0
- package/lib/quoxon/slotRun.js +131 -0
- package/lib/quoxon/sound/index.js +186 -0
- package/lib/quoxon/sound/mapping.js +120 -0
- package/lib/quoxon/sound/output.js +52 -0
- package/lib/quoxon/sound/synth.js +122 -0
- package/lib/quoxon/stray.js +22 -0
- package/lib/quoxon/suggestCommand.js +59 -0
- package/lib/quoxon/term.js +141 -0
- package/lib/quoxon/textBuffer.js +416 -0
- package/lib/quoxon/theme.js +286 -0
- package/lib/quoxon/tips.js +433 -0
- package/lib/quoxon/toolError.js +41 -0
- package/lib/quoxon/transcript.js +188 -0
- package/lib/quoxon/web/qface.js +89 -0
- package/lib/quoxon/welcome.js +52 -0
- package/lib/quoxon/whatsnew.js +136 -0
- package/lib/quoxon/whatsnew.jsonl +89 -0
- package/lib/quoxon/windowOrg.js +113 -0
- package/lib/server/diag.js +129 -0
- package/lib/server/doctor.js +71 -0
- package/lib/server/install.js +149 -0
- package/lib/server/pluginEnable.js +161 -0
- package/lib/server/skew.js +56 -0
- package/lib/server/snapshot.js +131 -0
- package/lib/server/status.js +128 -0
- package/lib/server/sys.js +65 -0
- package/lib/server/uninstall.js +63 -0
- package/lib/server/update.js +234 -0
- package/lib/toolOutputShape.js +315 -0
- package/lib/tui/app.jsx +289 -0
- package/lib/tui/components/Breadcrumb.jsx +42 -0
- package/lib/tui/components/ChatInput.jsx +68 -0
- package/lib/tui/components/Confirm.jsx +32 -0
- package/lib/tui/components/DataTable.jsx +270 -0
- package/lib/tui/components/DetailPanel.jsx +241 -0
- package/lib/tui/components/HelpOverlay.jsx +67 -0
- package/lib/tui/components/Layout.jsx +129 -0
- package/lib/tui/components/Palette.jsx +141 -0
- package/lib/tui/components/SearchInput.jsx +125 -0
- package/lib/tui/components/Sparkline.jsx +55 -0
- package/lib/tui/components/StatusBar.jsx +133 -0
- package/lib/tui/components/Toast.jsx +52 -0
- package/lib/tui/hooks/useApi.js +44 -0
- package/lib/tui/hooks/useHealth.js +90 -0
- package/lib/tui/hooks/usePolledApi.js +86 -0
- package/lib/tui/hooks/useTerminalSize.js +46 -0
- package/lib/tui/index.js +56 -0
- package/lib/tui/intro/Intro.jsx +332 -0
- package/lib/tui/jsx-loader.js +32 -0
- package/lib/tui/keys.js +87 -0
- package/lib/tui/registry.js +49 -0
- package/lib/tui/theme.js +103 -0
- package/lib/tui/views/AdminView.jsx +398 -0
- package/lib/tui/views/AgentView.jsx +204 -0
- package/lib/tui/views/BackupView.jsx +225 -0
- package/lib/tui/views/BrainView.jsx +223 -0
- package/lib/tui/views/ChatView.jsx +468 -0
- package/lib/tui/views/FilesView.jsx +218 -0
- package/lib/tui/views/FleetView.jsx +234 -0
- package/lib/tui/views/GovernanceView.jsx +453 -0
- package/lib/tui/views/HealthView.jsx +216 -0
- package/lib/tui/views/HyperionDeck.jsx +79 -0
- package/lib/tui/views/InboxView.jsx +228 -0
- package/lib/tui/views/LucidDeck.jsx +719 -0
- package/lib/tui/views/MainMenu.jsx +123 -0
- package/lib/tui/views/MemoryView.jsx +377 -0
- package/lib/tui/views/ObjectivesView.jsx +230 -0
- package/lib/tui/views/OrgView.jsx +229 -0
- package/lib/tui/views/ToolView.jsx +221 -0
- package/lib/tui/views/VaultView.jsx +422 -0
- package/lib/tui/views/WorkflowView.jsx +329 -0
- package/package.json +75 -4
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'engagement.*' endpoints — QUOX-SECURITY Phase 0 engagement/scope API.
|
|
3
|
+
* Collector-native (services/collector/server.js:
|
|
4
|
+
* app.post/get('/api/v1/security/engagements...', requireServiceOrUserAuth(), ...)),
|
|
5
|
+
* not a proxy. org_id is derived server-side from the authenticated user,
|
|
6
|
+
* same as the wazuh and quoxagent endpoint fragments, never sent by the CLI.
|
|
7
|
+
*
|
|
8
|
+
* NAMING NOTE: the REST path is /api/v1/security/engagements/* but the
|
|
9
|
+
* endpoint-key prefix here is `engagement.*`, not `security.*` — that
|
|
10
|
+
* prefix is already taken by services/auth/routes/orgSecurity.js's org
|
|
11
|
+
* session-policy/ip-allowlist/MFA settings (cli/lib/api/endpoints/security.js),
|
|
12
|
+
* a genuinely different product concern (org access-control settings, not a
|
|
13
|
+
* security-testing engagement's scope/policy object). The fragment guard
|
|
14
|
+
* (test/api/endpoints-fragments.test.js) requires key prefix === filename
|
|
15
|
+
* minus '.js', so this needed its own file either way.
|
|
16
|
+
*
|
|
17
|
+
* See cli/lib/api/endpoints/index.js for the fragment convention.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export const engagement = {
|
|
21
|
+
'engagement.create': {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
service: 'collector',
|
|
24
|
+
path: () => `/api/v1/security/engagements`,
|
|
25
|
+
tags: ['live-write'],
|
|
26
|
+
},
|
|
27
|
+
'engagement.list': {
|
|
28
|
+
method: 'GET',
|
|
29
|
+
service: 'collector',
|
|
30
|
+
path: () => `/api/v1/security/engagements`,
|
|
31
|
+
tags: ['live-safe'],
|
|
32
|
+
},
|
|
33
|
+
'engagement.get': {
|
|
34
|
+
method: 'GET',
|
|
35
|
+
service: 'collector',
|
|
36
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}`,
|
|
37
|
+
tags: ['live-safe'],
|
|
38
|
+
},
|
|
39
|
+
// Per-engagement gripe target: which repo a finding filed from this
|
|
40
|
+
// engagement goes to, and which org's GitHub connector token files it.
|
|
41
|
+
// lib/securityEngagement.js's setEngagementGripeTarget.
|
|
42
|
+
'engagement.gripe_target.set': {
|
|
43
|
+
method: 'PATCH',
|
|
44
|
+
service: 'collector',
|
|
45
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/gripe-target`,
|
|
46
|
+
tags: ['live-write'],
|
|
47
|
+
},
|
|
48
|
+
'engagement.target.create': {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
service: 'collector',
|
|
51
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/targets`,
|
|
52
|
+
tags: ['live-write'],
|
|
53
|
+
},
|
|
54
|
+
'engagement.target.verify': {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
service: 'collector',
|
|
57
|
+
path: ({ id, targetId }) => `/api/v1/security/engagements/${id}/verify-target/${targetId}`,
|
|
58
|
+
tags: ['live-write'],
|
|
59
|
+
},
|
|
60
|
+
// Phase 1 parity fix: the policy gate and the 3 real capability tools
|
|
61
|
+
// (lib/securityCapabilityTools.js) were agent-only until this route
|
|
62
|
+
// existed. Still policy-gated first, still honest about no scan host
|
|
63
|
+
// being configured, this is the same safety envelope as the agent path.
|
|
64
|
+
'engagement.check_policy': {
|
|
65
|
+
method: 'POST',
|
|
66
|
+
service: 'collector',
|
|
67
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/check-policy`,
|
|
68
|
+
tags: ['live-safe'],
|
|
69
|
+
},
|
|
70
|
+
'engagement.capability': {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
service: 'collector',
|
|
73
|
+
path: ({ id, tool }) => `/api/v1/security/engagements/${id}/capability/${tool}`,
|
|
74
|
+
tags: ['live-write'],
|
|
75
|
+
},
|
|
76
|
+
// COVERAGE Phase 2: httpx-based app-port discovery on a bare in-scope host,
|
|
77
|
+
// finding the ports that actually serve HTTP(S) so a scan hits the real
|
|
78
|
+
// surface, not only :80/:443. With { add:true } each discovered endpoint is
|
|
79
|
+
// registered + verified as a url target. lib/securityAppPortDiscovery.js.
|
|
80
|
+
'engagement.discover_app_ports': {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
service: 'collector',
|
|
83
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/discover-app-ports`,
|
|
84
|
+
tags: ['live-write'],
|
|
85
|
+
},
|
|
86
|
+
// Quoxcli-parity fix: this catalog existed for the dashboard's Tools tab
|
|
87
|
+
// but was never CLI-reachable. lib/securityCapabilityTools.js's
|
|
88
|
+
// getCapabilityToolCatalog().
|
|
89
|
+
'engagement.capability_tools': {
|
|
90
|
+
method: 'GET',
|
|
91
|
+
service: 'collector',
|
|
92
|
+
path: () => `/api/v1/security/capability-tools`,
|
|
93
|
+
tags: ['live-safe'],
|
|
94
|
+
},
|
|
95
|
+
// Async job model (found live 2026-08-10/11: a real sectest_vuln_scan/
|
|
96
|
+
// nuclei run outruns the sync route's 30s budget). Same policy gate,
|
|
97
|
+
// returns job_id immediately, poll engagement.job.get for the result.
|
|
98
|
+
'engagement.capability.start': {
|
|
99
|
+
method: 'POST',
|
|
100
|
+
service: 'collector',
|
|
101
|
+
path: ({ id, tool }) => `/api/v1/security/engagements/${id}/capability/${tool}/start`,
|
|
102
|
+
tags: ['live-write'],
|
|
103
|
+
},
|
|
104
|
+
'engagement.job.get': {
|
|
105
|
+
method: 'GET',
|
|
106
|
+
service: 'collector',
|
|
107
|
+
path: ({ jobId }) => `/api/v1/security/jobs/${jobId}`,
|
|
108
|
+
tags: ['live-safe'],
|
|
109
|
+
},
|
|
110
|
+
'engagement.jobs.list': {
|
|
111
|
+
method: 'GET',
|
|
112
|
+
service: 'collector',
|
|
113
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/jobs`,
|
|
114
|
+
tags: ['live-safe'],
|
|
115
|
+
},
|
|
116
|
+
// Findings storage (Phase 1, continued): closes the "no findings storage"
|
|
117
|
+
// gap. lib/securityFindings.js.
|
|
118
|
+
'engagement.findings.report': {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
service: 'collector',
|
|
121
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/findings`,
|
|
122
|
+
tags: ['live-write'],
|
|
123
|
+
},
|
|
124
|
+
'engagement.findings.list': {
|
|
125
|
+
method: 'GET',
|
|
126
|
+
service: 'collector',
|
|
127
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/findings`,
|
|
128
|
+
tags: ['live-safe'],
|
|
129
|
+
},
|
|
130
|
+
'engagement.findings.verify': {
|
|
131
|
+
method: 'POST',
|
|
132
|
+
service: 'collector',
|
|
133
|
+
path: ({ findingId }) => `/api/v1/security/findings/${findingId}/verify`,
|
|
134
|
+
tags: ['live-write'],
|
|
135
|
+
},
|
|
136
|
+
// Quoxcli-parity fix: marks a finding remediated ("resolved"), e.g. after
|
|
137
|
+
// the GitHub issue it was filed as was closed. lib/securityFindings.js.
|
|
138
|
+
'engagement.findings.resolve': {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
service: 'collector',
|
|
141
|
+
path: ({ findingId }) => `/api/v1/security/findings/${findingId}/resolve`,
|
|
142
|
+
tags: ['live-write'],
|
|
143
|
+
},
|
|
144
|
+
// Re-grade a finding's severity after it was reported (quox#601). Governed +
|
|
145
|
+
// witnessed; a reason is required. lib/securityFindings.js regradeFinding.
|
|
146
|
+
'engagement.findings.regrade': {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
service: 'collector',
|
|
149
|
+
path: ({ findingId }) => `/api/v1/security/findings/${findingId}/regrade`,
|
|
150
|
+
tags: ['live-write'],
|
|
151
|
+
},
|
|
152
|
+
// Finding -> next-steps pipeline: lib/securityReportActions.js. Raise as
|
|
153
|
+
// Gripe (GitHub issue), Propose as QuoxPlan (a note on the QUOX-SECURITY
|
|
154
|
+
// stream), Download PDF (whole engagement report). Email PDF is
|
|
155
|
+
// explicitly out of scope (needs SMTP).
|
|
156
|
+
'engagement.report.pdf': {
|
|
157
|
+
method: 'GET',
|
|
158
|
+
service: 'collector',
|
|
159
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/report.pdf`,
|
|
160
|
+
tags: ['live-safe'],
|
|
161
|
+
},
|
|
162
|
+
'engagement.findings.gripe': {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
service: 'collector',
|
|
165
|
+
path: ({ findingId }) => `/api/v1/security/findings/${findingId}/gripe`,
|
|
166
|
+
tags: ['live-write'],
|
|
167
|
+
},
|
|
168
|
+
'engagement.findings.propose': {
|
|
169
|
+
method: 'POST',
|
|
170
|
+
service: 'collector',
|
|
171
|
+
path: ({ findingId }) => `/api/v1/security/findings/${findingId}/quoxplan`,
|
|
172
|
+
tags: ['live-write'],
|
|
173
|
+
},
|
|
174
|
+
// QUOX-SECURITY-SCHED Phase 4: recurring scan schedules, backed by
|
|
175
|
+
// lib/securityEngagementSchedules.js (Phase 1 storage) and driven by the
|
|
176
|
+
// server-side scheduler (lib/securityScanScheduler.js, Phase 2). Cadence is
|
|
177
|
+
// interval (interval_seconds) or cron (schedule_kind:'cron' + cron_expression,
|
|
178
|
+
// a 5-field UTC expression); the command builds the body, this fragment is a
|
|
179
|
+
// pure route descriptor.
|
|
180
|
+
'engagement.schedule.create': {
|
|
181
|
+
method: 'POST',
|
|
182
|
+
service: 'collector',
|
|
183
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/schedules`,
|
|
184
|
+
tags: ['live-write'],
|
|
185
|
+
},
|
|
186
|
+
'engagement.schedule.list': {
|
|
187
|
+
method: 'GET',
|
|
188
|
+
service: 'collector',
|
|
189
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/schedules`,
|
|
190
|
+
tags: ['live-safe'],
|
|
191
|
+
},
|
|
192
|
+
'engagement.schedule.get': {
|
|
193
|
+
method: 'GET',
|
|
194
|
+
service: 'collector',
|
|
195
|
+
path: ({ scheduleId }) => `/api/v1/security/schedules/${scheduleId}`,
|
|
196
|
+
tags: ['live-safe'],
|
|
197
|
+
},
|
|
198
|
+
'engagement.schedule.update': {
|
|
199
|
+
method: 'PATCH',
|
|
200
|
+
service: 'collector',
|
|
201
|
+
path: ({ scheduleId }) => `/api/v1/security/schedules/${scheduleId}`,
|
|
202
|
+
tags: ['live-write'],
|
|
203
|
+
},
|
|
204
|
+
'engagement.schedule.enable': {
|
|
205
|
+
method: 'POST',
|
|
206
|
+
service: 'collector',
|
|
207
|
+
path: ({ scheduleId }) => `/api/v1/security/schedules/${scheduleId}/enable`,
|
|
208
|
+
tags: ['live-write'],
|
|
209
|
+
},
|
|
210
|
+
'engagement.schedule.disable': {
|
|
211
|
+
method: 'POST',
|
|
212
|
+
service: 'collector',
|
|
213
|
+
path: ({ scheduleId }) => `/api/v1/security/schedules/${scheduleId}/disable`,
|
|
214
|
+
tags: ['live-write'],
|
|
215
|
+
},
|
|
216
|
+
'engagement.schedule.delete': {
|
|
217
|
+
method: 'DELETE',
|
|
218
|
+
service: 'collector',
|
|
219
|
+
path: ({ scheduleId }) => `/api/v1/security/schedules/${scheduleId}`,
|
|
220
|
+
tags: ['live-write'],
|
|
221
|
+
},
|
|
222
|
+
// Quoxcli-parity fix: best-effort sync of GitHub issue states onto this
|
|
223
|
+
// engagement's filed findings (a closed issue auto-resolves its finding).
|
|
224
|
+
// lib/securityReportActions.js's syncFindingIssueStates.
|
|
225
|
+
'engagement.sync_issue_states': {
|
|
226
|
+
method: 'POST',
|
|
227
|
+
service: 'collector',
|
|
228
|
+
path: ({ id }) => `/api/v1/security/engagements/${id}/sync-issue-states`,
|
|
229
|
+
tags: ['live-write'],
|
|
230
|
+
},
|
|
231
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'engine.*' endpoints: tasks-service implant stats (QuoxReflect / QuoxLearn / QuoxInsight).
|
|
3
|
+
* Read-only, org-scoped from the caller's auth (tasks server.js /api/engine/<implant>/stats).
|
|
4
|
+
* Used by QUOXON /observers for what Quox already records about its own learning.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const engine = {
|
|
8
|
+
'engine.reflect.stats': { method: 'GET', service: 'tasks', path: () => `/api/engine/reflect/stats`, tags: ['live-safe'] },
|
|
9
|
+
'engine.learn.stats': { method: 'GET', service: 'tasks', path: () => `/api/engine/learn/stats`, tags: ['live-safe'] },
|
|
10
|
+
'engine.insight.stats': { method: 'GET', service: 'tasks', path: () => `/api/engine/insight/stats`, tags: ['live-safe'] },
|
|
11
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'entity.*' endpoints — extracted from the former monolithic
|
|
3
|
+
* cli/lib/api/endpoints.js as part of the per-domain fragment split.
|
|
4
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const entity = {
|
|
8
|
+
'entity.create': {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
service: 'memory',
|
|
11
|
+
path: () => `/api/entity`,
|
|
12
|
+
tags: ['live-write'],
|
|
13
|
+
},
|
|
14
|
+
'entity.get': {
|
|
15
|
+
method: 'GET',
|
|
16
|
+
service: 'memory',
|
|
17
|
+
path: ({ id }) => `/api/entity/${id}`,
|
|
18
|
+
tags: ['live-safe'],
|
|
19
|
+
},
|
|
20
|
+
'entity.delete': {
|
|
21
|
+
method: 'DELETE',
|
|
22
|
+
service: 'memory',
|
|
23
|
+
path: ({ id }) => `/api/entity/${id}`,
|
|
24
|
+
tags: ['live-write'],
|
|
25
|
+
},
|
|
26
|
+
'entity.list': {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
service: 'memory',
|
|
29
|
+
path: () => `/api/entity`,
|
|
30
|
+
tags: ['live-safe'],
|
|
31
|
+
},
|
|
32
|
+
'entity.relation': {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
service: 'memory',
|
|
35
|
+
path: () => `/api/entity/relation`,
|
|
36
|
+
tags: ['live-write'],
|
|
37
|
+
},
|
|
38
|
+
'entity.relation.delete': {
|
|
39
|
+
method: 'DELETE',
|
|
40
|
+
service: 'memory',
|
|
41
|
+
path: ({ id }) => `/api/entity/relation/${id}`,
|
|
42
|
+
tags: ['live-write'],
|
|
43
|
+
},
|
|
44
|
+
'entity.search.list': {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
service: 'memory',
|
|
47
|
+
path: () => `/api/entity/search`,
|
|
48
|
+
tags: ['live-safe'],
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'executions.*' endpoints — extracted from the former monolithic
|
|
3
|
+
* cli/lib/api/endpoints.js as part of the per-domain fragment split.
|
|
4
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
5
|
+
*
|
|
6
|
+
* fleet #465: quoxflow-direct GET routes for execution records
|
|
7
|
+
* (quoxflow/src/api/routes/executions.ts, mounted at
|
|
8
|
+
* app.route('/api/executions', ...)). These are the engine's OWN execution
|
|
9
|
+
* store — a different backend from the auth-service 'runs.*' entries
|
|
10
|
+
* (runs.js), which quoxflow never writes to. `quox run get`/`run list` use
|
|
11
|
+
* these as the engine-first read, falling back to 'runs.get'/'runs.list' on
|
|
12
|
+
* the auth-service model. Same access-path precedent as
|
|
13
|
+
* 'workflows.activate'/'workflows.applyGet' in workflows.js: org_id is
|
|
14
|
+
* resolved server-side from the caller's JWT/service-key context
|
|
15
|
+
* (org-scope.ts, resolveOrgScope), never a URL/query param, so no orgId
|
|
16
|
+
* path param appears here.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export const executions = {
|
|
20
|
+
'executions.get': {
|
|
21
|
+
method: 'GET',
|
|
22
|
+
service: 'quoxflow',
|
|
23
|
+
path: ({ executionId }) => `/api/executions/${executionId}`,
|
|
24
|
+
tags: ['live-safe'],
|
|
25
|
+
},
|
|
26
|
+
'executions.list': {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
service: 'quoxflow',
|
|
29
|
+
path: () => `/api/executions`,
|
|
30
|
+
tags: ['live-safe'],
|
|
31
|
+
},
|
|
32
|
+
// #997: `run cancel`/`run resume` reach the engine first (these are the runs `run list` shows)
|
|
33
|
+
'executions.cancel': {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
service: 'quoxflow',
|
|
36
|
+
path: ({ executionId }) => `/api/executions/${executionId}/cancel`,
|
|
37
|
+
tags: ['live-write'],
|
|
38
|
+
},
|
|
39
|
+
'executions.resume': {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
service: 'quoxflow',
|
|
42
|
+
path: ({ executionId }) => `/api/executions/${executionId}/resume`,
|
|
43
|
+
tags: ['live-write'],
|
|
44
|
+
},
|
|
45
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'fetchAllowlist.*' endpoints: the per-org URL-prefix allowlist behind the governed
|
|
3
|
+
* agent fetch tool (web_fetch_allowlisted, quox#1171). Collector-owned routes
|
|
4
|
+
* (services/collector/lib/agentFetchAllowlistRoutes.js). Writes are human org
|
|
5
|
+
* admin only on the server.
|
|
6
|
+
*
|
|
7
|
+
* See cli/lib/api/endpoints/index.js for the fragment convention.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export const fetchAllowlist = {
|
|
11
|
+
'fetchAllowlist.list': {
|
|
12
|
+
method: 'GET',
|
|
13
|
+
service: 'collector',
|
|
14
|
+
path: () => `/api/v1/fetch-allowlist`,
|
|
15
|
+
tags: ['live-safe'],
|
|
16
|
+
},
|
|
17
|
+
'fetchAllowlist.add': {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
service: 'collector',
|
|
20
|
+
path: () => `/api/v1/fetch-allowlist`,
|
|
21
|
+
},
|
|
22
|
+
'fetchAllowlist.remove': {
|
|
23
|
+
method: 'DELETE',
|
|
24
|
+
service: 'collector',
|
|
25
|
+
path: ({ prefix }) => `/api/v1/fetch-allowlist?url_prefix=${encodeURIComponent(prefix)}`,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'file.*' endpoints — extracted from the former monolithic
|
|
3
|
+
* cli/lib/api/endpoints.js as part of the per-domain fragment split.
|
|
4
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const file = {
|
|
8
|
+
'file.delete': {
|
|
9
|
+
method: 'DELETE',
|
|
10
|
+
service: 'files',
|
|
11
|
+
path: ({ fileId }) => `/file/${fileId}`,
|
|
12
|
+
tags: ['live-write'],
|
|
13
|
+
},
|
|
14
|
+
'file.get': {
|
|
15
|
+
method: 'GET',
|
|
16
|
+
service: 'files',
|
|
17
|
+
path: ({ fileId }) => `/file/${fileId}`,
|
|
18
|
+
tags: ['live-safe'],
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'files.*' endpoints — extracted from the former monolithic
|
|
3
|
+
* cli/lib/api/endpoints.js as part of the per-domain fragment split.
|
|
4
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const files = {
|
|
8
|
+
'files.list': {
|
|
9
|
+
method: 'GET',
|
|
10
|
+
service: 'files',
|
|
11
|
+
path: () => `/list`,
|
|
12
|
+
tags: ['live-safe'],
|
|
13
|
+
},
|
|
14
|
+
'files.stats': {
|
|
15
|
+
method: 'GET',
|
|
16
|
+
service: 'files',
|
|
17
|
+
path: () => `/stats`,
|
|
18
|
+
tags: ['live-safe'],
|
|
19
|
+
},
|
|
20
|
+
'files.upload': {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
service: 'files',
|
|
23
|
+
path: () => `/upload`,
|
|
24
|
+
tags: ['live-write'],
|
|
25
|
+
},
|
|
26
|
+
// F01 A': quarantined legacy files (no proven owner) and their owner-approved assignment. Collector routes,
|
|
27
|
+
// human instance admin only (enforced server-side).
|
|
28
|
+
'files.quarantine.list': {
|
|
29
|
+
method: 'GET',
|
|
30
|
+
service: 'collector',
|
|
31
|
+
path: () => `/api/v1/admin/files/quarantine`,
|
|
32
|
+
tags: ['live-safe'],
|
|
33
|
+
},
|
|
34
|
+
'files.quarantine.assign': {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
service: 'collector',
|
|
37
|
+
path: () => `/api/v1/admin/files/assign`,
|
|
38
|
+
tags: ['live-write'],
|
|
39
|
+
},
|
|
40
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'github.*' endpoints — the collector's governed GitHub proxy
|
|
3
|
+
* (services/collector/server.js mounts routes/github-proxy.js at /github,
|
|
4
|
+
* user-authed + github plugin entitlement; credentials resolve from the
|
|
5
|
+
* org vault server-side, never client-side).
|
|
6
|
+
*
|
|
7
|
+
* First fragment added for quox#478 (gripe --yes deterministic fallback).
|
|
8
|
+
* The full `quox github` command group is tracked separately (quox#566).
|
|
9
|
+
*
|
|
10
|
+
* See cli/lib/api/endpoints/index.js for the fragment convention.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export const github = {
|
|
14
|
+
'github.issue.create': {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
service: 'collector',
|
|
17
|
+
path: () => `/github/issues`,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default github;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'governance.*' endpoints — OPGOV quox#582: the governance compiler's
|
|
3
|
+
* draft-review-arm flow on the collector. Compile is deterministic
|
|
4
|
+
* (lib/governance/ruleCompiler.js); arming requires a logged-in human, so a
|
|
5
|
+
* service-key session can compile and list but never arm. Enforcement is
|
|
6
|
+
* phase 3 and NOT wired yet; nothing here claims otherwise.
|
|
7
|
+
*
|
|
8
|
+
* See cli/lib/api/endpoints/index.js for the fragment convention.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const governance = {
|
|
12
|
+
// Pre-existing incident endpoints (from the monolithic endpoints.js split).
|
|
13
|
+
'governance.incidents.get': {
|
|
14
|
+
method: 'GET',
|
|
15
|
+
service: 'collector',
|
|
16
|
+
path: ({ id }) => `/governance/incidents/${id}`,
|
|
17
|
+
tags: ['live-safe'],
|
|
18
|
+
},
|
|
19
|
+
'governance.incidents.list': {
|
|
20
|
+
method: 'GET',
|
|
21
|
+
service: 'collector',
|
|
22
|
+
path: () => `/governance/incidents`,
|
|
23
|
+
tags: ['live-safe'],
|
|
24
|
+
},
|
|
25
|
+
'governance.policy.compile': {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
service: 'collector',
|
|
28
|
+
path: (p) => `/orgs/${p.orgId}/governance/policies/compile`,
|
|
29
|
+
},
|
|
30
|
+
'governance.policy.list': {
|
|
31
|
+
method: 'GET',
|
|
32
|
+
service: 'collector',
|
|
33
|
+
path: (p) => `/orgs/${p.orgId}/governance/policies${p.state ? `?state=${encodeURIComponent(p.state)}` : ''}`,
|
|
34
|
+
tags: ['live-safe'],
|
|
35
|
+
},
|
|
36
|
+
'governance.policy.arm': {
|
|
37
|
+
method: 'POST',
|
|
38
|
+
service: 'collector',
|
|
39
|
+
path: (p) => `/orgs/${p.orgId}/governance/policies/${p.id}/arm`,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default governance;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'hat.*' endpoints (QUOXHAT #721 b): read-only views of the org's hats.
|
|
3
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
4
|
+
*
|
|
5
|
+
* Backend: services/auth/routes/quoxhat.js, mounted at plain `/api` on the
|
|
6
|
+
* auth service; every route applies requireAuth + requireOrgMembership.
|
|
7
|
+
* The collector holds only the /internal service-key hat routes, so the
|
|
8
|
+
* user-facing reads live on auth (same as the dashboard's quoxhatClient).
|
|
9
|
+
*
|
|
10
|
+
* - list returns `{ hats: [...hat with definition], settings }`; listing
|
|
11
|
+
* also lazily installs/upgrades built-in templates (audited).
|
|
12
|
+
* - get returns `{ hat, enforcement }`; `hat.revisions` is the history and
|
|
13
|
+
* `?revision=n` swaps in that revision's definition (`hat.revision_shown`).
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export const hat = {
|
|
17
|
+
'hat.list': {
|
|
18
|
+
method: 'GET',
|
|
19
|
+
service: 'auth',
|
|
20
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/quoxhat/hats`,
|
|
21
|
+
tags: ['live-safe'],
|
|
22
|
+
},
|
|
23
|
+
'hat.get': {
|
|
24
|
+
method: 'GET',
|
|
25
|
+
service: 'auth',
|
|
26
|
+
path: ({ orgId, hatId }) => `/api/orgs/${orgId}/quoxhat/hats/${encodeURIComponent(hatId)}`,
|
|
27
|
+
tags: ['live-safe'],
|
|
28
|
+
},
|
|
29
|
+
// quox#1183: which hat a conversation is on, and the person's own switch (audited quoxhat.binding.selected).
|
|
30
|
+
'hat.resolve': {
|
|
31
|
+
method: 'GET',
|
|
32
|
+
service: 'auth',
|
|
33
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/quoxhat/resolve`,
|
|
34
|
+
tags: ['live-safe'],
|
|
35
|
+
},
|
|
36
|
+
'hat.bind': {
|
|
37
|
+
method: 'PUT',
|
|
38
|
+
service: 'auth',
|
|
39
|
+
path: ({ orgId, conversationId }) => `/api/orgs/${orgId}/quoxhat/bindings/${encodeURIComponent(conversationId)}`,
|
|
40
|
+
},
|
|
41
|
+
// CUSTOM-HATS (owner 2026-10-17): create / edit (definition + optional rename) / delete a custom
|
|
42
|
+
// hat. Same auth routes the dashboard uses; org hats need org manage-settings, a private hat only
|
|
43
|
+
// its owner. Every write is revisioned and audited server-side (quoxhat.hat.created|updated|deleted).
|
|
44
|
+
'hat.create': {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
service: 'auth',
|
|
47
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/quoxhat/hats`,
|
|
48
|
+
},
|
|
49
|
+
'hat.update': {
|
|
50
|
+
method: 'PUT',
|
|
51
|
+
service: 'auth',
|
|
52
|
+
path: ({ orgId, hatId }) => `/api/orgs/${orgId}/quoxhat/hats/${encodeURIComponent(hatId)}`,
|
|
53
|
+
},
|
|
54
|
+
'hat.delete': {
|
|
55
|
+
method: 'DELETE',
|
|
56
|
+
service: 'auth',
|
|
57
|
+
path: ({ orgId, hatId }) => `/api/orgs/${orgId}/quoxhat/hats/${encodeURIComponent(hatId)}`,
|
|
58
|
+
},
|
|
59
|
+
// Audited reset of an org-edited built-in hat back to its current template
|
|
60
|
+
// (needs org manage-settings); writes quoxhat.hat.reset_to_template.
|
|
61
|
+
'hat.reset': {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
service: 'auth',
|
|
64
|
+
path: ({ orgId, hatId }) => `/api/orgs/${orgId}/quoxhat/hats/${encodeURIComponent(hatId)}/reset-to-template`,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'inbox.*' endpoints — extracted from the former monolithic
|
|
3
|
+
* cli/lib/api/endpoints.js as part of the per-domain fragment split.
|
|
4
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const inbox = {
|
|
8
|
+
'inbox.get': {
|
|
9
|
+
method: 'GET',
|
|
10
|
+
service: 'auth',
|
|
11
|
+
path: ({ orgId, itemId }) => `/api/orgs/${orgId}/inbox/${itemId}`,
|
|
12
|
+
tags: ['live-safe'],
|
|
13
|
+
},
|
|
14
|
+
'inbox.list': {
|
|
15
|
+
method: 'GET',
|
|
16
|
+
service: 'auth',
|
|
17
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/inbox`,
|
|
18
|
+
tags: ['live-safe'],
|
|
19
|
+
},
|
|
20
|
+
// quox#827: the ONE server-side set of open approvals this user can act on (also backs stats.pending_approvals and LUCID).
|
|
21
|
+
'inbox.approvals.open': {
|
|
22
|
+
method: 'GET',
|
|
23
|
+
service: 'auth',
|
|
24
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/approvals/open`,
|
|
25
|
+
tags: ['live-safe'],
|
|
26
|
+
},
|
|
27
|
+
'inbox.respond': {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
service: 'auth',
|
|
30
|
+
path: ({ orgId, itemId }) => `/api/orgs/${orgId}/inbox/${itemId}/respond`,
|
|
31
|
+
tags: ['live-write'],
|
|
32
|
+
},
|
|
33
|
+
// quox ask: a session files a decision request (one inbox item) and waits for the human's answer.
|
|
34
|
+
'inbox.decision.create': {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
service: 'auth',
|
|
37
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/decisions`,
|
|
38
|
+
tags: ['live-write'],
|
|
39
|
+
},
|
|
40
|
+
'inbox.decision.get': {
|
|
41
|
+
method: 'GET',
|
|
42
|
+
service: 'auth',
|
|
43
|
+
path: ({ orgId, id }) => `/api/orgs/${orgId}/decisions/${id}`,
|
|
44
|
+
tags: ['live-safe'],
|
|
45
|
+
},
|
|
46
|
+
'inbox.stats.list': {
|
|
47
|
+
method: 'GET',
|
|
48
|
+
service: 'auth',
|
|
49
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/inbox/stats`,
|
|
50
|
+
tags: ['live-safe'],
|
|
51
|
+
},
|
|
52
|
+
};
|