quoxcli 0.0.0-stage → 0.2.0
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 +142 -2
- package/bin/quox.js +292 -0
- package/bin/quoxon.js +8 -0
- package/lib/api/endpoints/admin.js +125 -0
- package/lib/api/endpoints/aee.js +38 -0
- package/lib/api/endpoints/agent-attach.js +126 -0
- package/lib/api/endpoints/agents.js +56 -0
- package/lib/api/endpoints/assistants.js +50 -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/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 +54 -0
- package/lib/api/endpoints/consent.js +26 -0
- package/lib/api/endpoints/contactsq.js +66 -0
- package/lib/api/endpoints/conversations.js +32 -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 +32 -0
- package/lib/api/endpoints/file.js +20 -0
- package/lib/api/endpoints/files.js +26 -0
- package/lib/api/endpoints/github.js +21 -0
- package/lib/api/endpoints/governance.js +43 -0
- package/lib/api/endpoints/hat.js +36 -0
- package/lib/api/endpoints/inbox.js +32 -0
- package/lib/api/endpoints/inboxq.js +120 -0
- package/lib/api/endpoints/index.js +228 -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 +75 -0
- package/lib/api/endpoints/mfa.js +32 -0
- package/lib/api/endpoints/mon.js +178 -0
- package/lib/api/endpoints/notesq.js +43 -0
- package/lib/api/endpoints/objectives.js +62 -0
- package/lib/api/endpoints/orgs.js +38 -0
- package/lib/api/endpoints/plugins.js +134 -0
- package/lib/api/endpoints/powers.js +75 -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 +114 -0
- package/lib/api/endpoints/quoxseo.js +108 -0
- package/lib/api/endpoints/reach.js +47 -0
- package/lib/api/endpoints/runs.js +38 -0
- package/lib/api/endpoints/safety.js +46 -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 +180 -0
- package/lib/api/endpoints/sso.js +67 -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 +70 -0
- package/lib/api/endpoints/user-library.js +41 -0
- package/lib/api/endpoints/users.js +20 -0
- package/lib/api/endpoints/v1.js +499 -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 +40 -0
- package/lib/api/endpoints/webhooks.js +46 -0
- package/lib/api/endpoints/workflows.js +162 -0
- package/lib/api/endpoints/x.js +24 -0
- package/lib/api/endpoints.js +15 -0
- package/lib/commands/admin.js +359 -0
- package/lib/commands/aee.js +99 -0
- package/lib/commands/agent.js +201 -0
- package/lib/commands/agentAttach.js +1440 -0
- package/lib/commands/approvals.js +47 -0
- package/lib/commands/assistant.js +114 -0
- package/lib/commands/auth.js +458 -0
- package/lib/commands/awareness.js +88 -0
- package/lib/commands/backup.js +373 -0
- package/lib/commands/brain.js +994 -0
- package/lib/commands/budget.js +241 -0
- package/lib/commands/build.js +156 -0
- package/lib/commands/calendar.js +216 -0
- package/lib/commands/capabilities.js +34 -0
- package/lib/commands/chat.js +240 -0
- package/lib/commands/claude.js +354 -0
- package/lib/commands/config-cmd.js +106 -0
- package/lib/commands/consent.js +84 -0
- package/lib/commands/contacts.js +967 -0
- package/lib/commands/contactsSelftest.js +132 -0
- package/lib/commands/conversation.js +74 -0
- package/lib/commands/department.js +75 -0
- package/lib/commands/dev.js +620 -0
- package/lib/commands/devResident.js +314 -0
- package/lib/commands/devSupervisor.js +1050 -0
- package/lib/commands/discord.js +96 -0
- package/lib/commands/doctor.js +181 -0
- package/lib/commands/domain.js +114 -0
- package/lib/commands/done.js +277 -0
- package/lib/commands/engagement.js +586 -0
- package/lib/commands/entity.js +119 -0
- package/lib/commands/facebook.js +212 -0
- package/lib/commands/file.js +128 -0
- package/lib/commands/fleet.js +882 -0
- package/lib/commands/governance.js +638 -0
- package/lib/commands/gripe.js +324 -0
- package/lib/commands/hat.js +205 -0
- package/lib/commands/helpers.js +79 -0
- package/lib/commands/inbox.js +122 -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 +280 -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 +591 -0
- package/lib/commands/mail.js +531 -0
- package/lib/commands/memory.js +284 -0
- package/lib/commands/mon.js +514 -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 +92 -0
- package/lib/commands/objective.js +229 -0
- package/lib/commands/onboard.js +328 -0
- package/lib/commands/open.js +56 -0
- package/lib/commands/org.js +266 -0
- package/lib/commands/plan.js +906 -0
- package/lib/commands/plugin-doctor.js +1091 -0
- package/lib/commands/plugin.js +539 -0
- package/lib/commands/policy.js +78 -0
- package/lib/commands/powers.js +296 -0
- package/lib/commands/prompt.js +350 -0
- package/lib/commands/qlarity.js +690 -0
- package/lib/commands/quoxbox.js +270 -0
- package/lib/commands/quoxchat.js +266 -0
- package/lib/commands/quoxseo.js +340 -0
- package/lib/commands/reach.js +158 -0
- package/lib/commands/role.js +286 -0
- package/lib/commands/run.js +132 -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/service.js +89 -0
- package/lib/commands/settings.js +99 -0
- package/lib/commands/setup.js +543 -0
- package/lib/commands/skillManifest.js +113 -0
- package/lib/commands/skillRightsFormat.js +38 -0
- package/lib/commands/skills.js +644 -0
- package/lib/commands/slot.js +1198 -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 +140 -0
- package/lib/commands/tg.js +240 -0
- package/lib/commands/tiktok.js +218 -0
- package/lib/commands/tool.js +216 -0
- package/lib/commands/trace.js +525 -0
- package/lib/commands/trigger.js +128 -0
- package/lib/commands/vault.js +1424 -0
- package/lib/commands/voice.js +182 -0
- package/lib/commands/volt.js +528 -0
- package/lib/commands/watch.js +115 -0
- package/lib/commands/webhook.js +137 -0
- package/lib/commands/workflow.js +503 -0
- package/lib/commands/x.js +439 -0
- package/lib/core/actingAs.js +136 -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/auth.js +350 -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/client.js +584 -0
- package/lib/core/completions.js +163 -0
- package/lib/core/config.js +551 -0
- package/lib/core/confirm.js +37 -0
- package/lib/core/deeplinks.js +76 -0
- package/lib/core/doneEngineFetch.js +219 -0
- package/lib/core/errors.js +132 -0
- package/lib/core/global-flags.js +90 -0
- package/lib/core/governedSession.js +402 -0
- package/lib/core/lazyCommands.js +119 -0
- package/lib/core/liveSessionsReport.js +112 -0
- package/lib/core/org-override.js +52 -0
- package/lib/core/output.js +239 -0
- package/lib/core/prodEnv.js +7 -0
- package/lib/core/quoxglyph.js +158 -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 +104 -0
- package/lib/core/sessionHeartbeat.js +192 -0
- package/lib/core/sessionsOverview.js +160 -0
- package/lib/core/slotKeeper.js +282 -0
- package/lib/core/supervisorEngine.js +864 -0
- package/lib/core/systemdInstaller.js +256 -0
- package/lib/core/version.js +87 -0
- package/lib/core/websiteSession.js +148 -0
- package/lib/lucid/LucidIntro.jsx +105 -0
- package/lib/lucid/blind.js +71 -0
- package/lib/lucid/deck.js +32 -0
- package/lib/lucid/fmt.js +139 -0
- package/lib/lucid/sitrep.js +173 -0
- package/lib/plugins/loader.js +93 -0
- package/lib/quoxon/activity.js +104 -0
- package/lib/quoxon/api.js +473 -0
- package/lib/quoxon/app.js +1262 -0
- package/lib/quoxon/capabilities.js +75 -0
- package/lib/quoxon/commands.js +154 -0
- package/lib/quoxon/connect.js +467 -0
- package/lib/quoxon/connectCard.js +28 -0
- package/lib/quoxon/context.js +68 -0
- package/lib/quoxon/copy.js +33 -0
- package/lib/quoxon/demo.fixtures.js +24 -0
- package/lib/quoxon/demo.js +35 -0
- package/lib/quoxon/egg.js +36 -0
- package/lib/quoxon/events.js +458 -0
- package/lib/quoxon/gallery.js +223 -0
- package/lib/quoxon/indicator.js +193 -0
- package/lib/quoxon/intent.js +41 -0
- package/lib/quoxon/keys.js +121 -0
- package/lib/quoxon/main.js +244 -0
- package/lib/quoxon/markdown.js +317 -0
- package/lib/quoxon/model.js +205 -0
- package/lib/quoxon/motion/clock.js +69 -0
- package/lib/quoxon/motion/color.js +35 -0
- package/lib/quoxon/motion/frame.js +14 -0
- package/lib/quoxon/motion/reveal.js +54 -0
- package/lib/quoxon/motion/ring.js +79 -0
- package/lib/quoxon/objects/agent.js +61 -0
- package/lib/quoxon/objects/crystal.js +100 -0
- package/lib/quoxon/objects/fetch.js +170 -0
- package/lib/quoxon/objects/index.js +85 -0
- package/lib/quoxon/objects/ladder.js +71 -0
- package/lib/quoxon/objects/memory.js +44 -0
- package/lib/quoxon/objects/model.js +118 -0
- package/lib/quoxon/objects/proof.js +110 -0
- package/lib/quoxon/objects/skill.js +105 -0
- package/lib/quoxon/objects/view.js +76 -0
- package/lib/quoxon/objects/workflow.js +119 -0
- package/lib/quoxon/observers.js +42 -0
- package/lib/quoxon/onboarding/copy.js +235 -0
- package/lib/quoxon/onboarding/credential.js +95 -0
- package/lib/quoxon/onboarding/detect.js +22 -0
- package/lib/quoxon/onboarding/finish.js +119 -0
- package/lib/quoxon/onboarding/index.js +67 -0
- package/lib/quoxon/onboarding/installRunner.js +225 -0
- package/lib/quoxon/onboarding/intent.js +53 -0
- package/lib/quoxon/onboarding/journey.js +73 -0
- package/lib/quoxon/onboarding/preflight.js +142 -0
- package/lib/quoxon/onboarding/runner.js +58 -0
- package/lib/quoxon/onboarding/view.js +625 -0
- package/lib/quoxon/print.js +94 -0
- package/lib/quoxon/qart.js +379 -0
- package/lib/quoxon/qglyph.js +143 -0
- package/lib/quoxon/qhello.js +58 -0
- package/lib/quoxon/qmotion.js +111 -0
- package/lib/quoxon/render.js +648 -0
- package/lib/quoxon/roster.js +221 -0
- package/lib/quoxon/route.js +38 -0
- package/lib/quoxon/rules.js +130 -0
- package/lib/quoxon/session.js +68 -0
- package/lib/quoxon/skills.js +30 -0
- package/lib/quoxon/slash/compact.js +90 -0
- package/lib/quoxon/slash/ledger.js +83 -0
- package/lib/quoxon/slash/listView.js +28 -0
- package/lib/quoxon/slash/palette.js +104 -0
- package/lib/quoxon/slash/paletteController.js +59 -0
- package/lib/quoxon/slash/panels.js +101 -0
- package/lib/quoxon/slash/picker.js +38 -0
- package/lib/quoxon/slash/restart.js +144 -0
- package/lib/quoxon/slash/resume.js +59 -0
- package/lib/quoxon/slash/settings.js +50 -0
- package/lib/quoxon/sound/index.js +186 -0
- package/lib/quoxon/sound/mapping.js +119 -0
- package/lib/quoxon/sound/output.js +52 -0
- package/lib/quoxon/sound/synth.js +122 -0
- package/lib/quoxon/term.js +106 -0
- package/lib/quoxon/textBuffer.js +242 -0
- package/lib/quoxon/theme.js +253 -0
- package/lib/quoxon/transcript.js +150 -0
- package/lib/quoxon/web/qface.js +81 -0
- package/lib/quoxon/welcome.js +52 -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/InboxView.jsx +228 -0
- package/lib/tui/views/LucidDeck.jsx +727 -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 +72 -4
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'traces.*' endpoints — TRV (Trace Replay & Visualization) API, added as
|
|
3
|
+
* part of WP4.1 (STREAM_CLI_PARITY_PLAN.md §2.3 #8).
|
|
4
|
+
*
|
|
5
|
+
* Backend: services/collector/server.js, mounted at plain `/traces` (NOT
|
|
6
|
+
* org-scoped in the URL — collector-direct, same pattern as aee.js/chat.js).
|
|
7
|
+
* Verified at the handlers (server.js:11718-12348).
|
|
8
|
+
*
|
|
9
|
+
* ORG-SCOPING FINDING (backend, not fixed here — feeds the multi-tenant
|
|
10
|
+
* audit): none of the three list reads below (traces.list, replaySessions.list,
|
|
11
|
+
* comparisons.list, correlations.list) filter by org, despite the write side
|
|
12
|
+
* accepting an optional `org_id` body field on create:
|
|
13
|
+
* - `GET /traces` queries the `envelopes` table, which has NO org_id
|
|
14
|
+
* column at all (see migrations/aee/000-baseline.sql) — every trace on
|
|
15
|
+
* the instance is returned regardless of caller.
|
|
16
|
+
* - `GET /traces/replay-sessions`, `GET /traces/comparisons`, and
|
|
17
|
+
* `GET /traces/correlations` all run a bare `SELECT * ... LIMIT ? OFFSET ?`
|
|
18
|
+
* with no `WHERE org_id = ?` (server.js:2014/2026/2037 prepared
|
|
19
|
+
* statements), even though `replay_sessions.org_id`, `trace_comparisons
|
|
20
|
+
* .org_id`, and `trace_correlations.org_id` columns exist WITH indexes
|
|
21
|
+
* built specifically for this (migrations/volt/000-baseline.sql:175-206)
|
|
22
|
+
* — org_id is stored on write but never used to filter on read. Same
|
|
23
|
+
* "leak" shape as the triggers.* / workflows.list findings documented in
|
|
24
|
+
* endpoints/triggers.js and endpoints/workflows.js. Not fixed here —
|
|
25
|
+
* out of scope for a CLI work package; flagging for the multi-tenant
|
|
26
|
+
* audit that requested this check.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export const traces = {
|
|
30
|
+
// ── Trace assembly (TRV-2) ──
|
|
31
|
+
'traces.list': {
|
|
32
|
+
method: 'GET',
|
|
33
|
+
service: 'collector',
|
|
34
|
+
path: () => `/traces`,
|
|
35
|
+
tags: ['live-safe'],
|
|
36
|
+
},
|
|
37
|
+
'traces.get': {
|
|
38
|
+
method: 'GET',
|
|
39
|
+
service: 'collector',
|
|
40
|
+
path: ({ id }) => `/traces/${id}`,
|
|
41
|
+
tags: ['live-safe'],
|
|
42
|
+
},
|
|
43
|
+
'traces.simulate': {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
service: 'collector',
|
|
46
|
+
path: ({ id }) => `/traces/${id}/simulate`,
|
|
47
|
+
tags: ['live-write'],
|
|
48
|
+
},
|
|
49
|
+
'traces.compare': {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
service: 'collector',
|
|
52
|
+
path: () => `/traces/compare`,
|
|
53
|
+
tags: ['live-write'],
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
// ── Replay sessions (TRV-1) ──
|
|
57
|
+
'traces.replaySessions.create': {
|
|
58
|
+
method: 'POST',
|
|
59
|
+
service: 'collector',
|
|
60
|
+
path: () => `/traces/replay-sessions`,
|
|
61
|
+
tags: ['live-write'],
|
|
62
|
+
},
|
|
63
|
+
'traces.replaySessions.list': {
|
|
64
|
+
method: 'GET',
|
|
65
|
+
service: 'collector',
|
|
66
|
+
path: () => `/traces/replay-sessions`,
|
|
67
|
+
tags: ['live-safe'],
|
|
68
|
+
},
|
|
69
|
+
'traces.replaySessions.get': {
|
|
70
|
+
method: 'GET',
|
|
71
|
+
service: 'collector',
|
|
72
|
+
path: ({ id }) => `/traces/replay-sessions/${id}`,
|
|
73
|
+
tags: ['live-safe'],
|
|
74
|
+
},
|
|
75
|
+
'traces.replaySessions.update': {
|
|
76
|
+
method: 'PUT',
|
|
77
|
+
service: 'collector',
|
|
78
|
+
path: ({ id }) => `/traces/replay-sessions/${id}`,
|
|
79
|
+
tags: ['live-write'],
|
|
80
|
+
},
|
|
81
|
+
'traces.replaySessions.delete': {
|
|
82
|
+
method: 'DELETE',
|
|
83
|
+
service: 'collector',
|
|
84
|
+
path: ({ id }) => `/traces/replay-sessions/${id}`,
|
|
85
|
+
tags: ['live-write'],
|
|
86
|
+
},
|
|
87
|
+
'traces.replaySessions.deleteAll': {
|
|
88
|
+
method: 'DELETE',
|
|
89
|
+
service: 'collector',
|
|
90
|
+
path: () => `/traces/replay-sessions`,
|
|
91
|
+
tags: ['live-write'],
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
// ── Comparisons (TRV-1) ──
|
|
95
|
+
'traces.comparisons.create': {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
service: 'collector',
|
|
98
|
+
path: () => `/traces/comparisons`,
|
|
99
|
+
tags: ['live-write'],
|
|
100
|
+
},
|
|
101
|
+
'traces.comparisons.list': {
|
|
102
|
+
method: 'GET',
|
|
103
|
+
service: 'collector',
|
|
104
|
+
path: () => `/traces/comparisons`,
|
|
105
|
+
tags: ['live-safe'],
|
|
106
|
+
},
|
|
107
|
+
'traces.comparisons.get': {
|
|
108
|
+
method: 'GET',
|
|
109
|
+
service: 'collector',
|
|
110
|
+
path: ({ id }) => `/traces/comparisons/${id}`,
|
|
111
|
+
tags: ['live-safe'],
|
|
112
|
+
},
|
|
113
|
+
'traces.comparisons.update': {
|
|
114
|
+
method: 'PUT',
|
|
115
|
+
service: 'collector',
|
|
116
|
+
path: ({ id }) => `/traces/comparisons/${id}`,
|
|
117
|
+
tags: ['live-write'],
|
|
118
|
+
},
|
|
119
|
+
'traces.comparisons.delete': {
|
|
120
|
+
method: 'DELETE',
|
|
121
|
+
service: 'collector',
|
|
122
|
+
path: ({ id }) => `/traces/comparisons/${id}`,
|
|
123
|
+
tags: ['live-write'],
|
|
124
|
+
},
|
|
125
|
+
'traces.comparisons.deleteAll': {
|
|
126
|
+
method: 'DELETE',
|
|
127
|
+
service: 'collector',
|
|
128
|
+
path: () => `/traces/comparisons`,
|
|
129
|
+
tags: ['live-write'],
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
// ── Correlation cache (TRV-1) ──
|
|
133
|
+
'traces.correlations.get': {
|
|
134
|
+
method: 'GET',
|
|
135
|
+
service: 'collector',
|
|
136
|
+
path: ({ runId }) => `/traces/correlations/${runId}`,
|
|
137
|
+
tags: ['live-safe'],
|
|
138
|
+
},
|
|
139
|
+
'traces.correlations.create': {
|
|
140
|
+
method: 'POST',
|
|
141
|
+
service: 'collector',
|
|
142
|
+
path: () => `/traces/correlations`,
|
|
143
|
+
tags: ['live-write'],
|
|
144
|
+
},
|
|
145
|
+
'traces.correlations.list': {
|
|
146
|
+
method: 'GET',
|
|
147
|
+
service: 'collector',
|
|
148
|
+
path: () => `/traces/correlations`,
|
|
149
|
+
tags: ['live-safe'],
|
|
150
|
+
},
|
|
151
|
+
'traces.correlations.delete': {
|
|
152
|
+
method: 'DELETE',
|
|
153
|
+
service: 'collector',
|
|
154
|
+
path: ({ runId }) => `/traces/correlations/${runId}`,
|
|
155
|
+
tags: ['live-write'],
|
|
156
|
+
},
|
|
157
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'triggers.*' endpoints — WP2.2 (docs/STREAM_CLI_PARITY_PLAN.md §2.3 #2).
|
|
3
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
4
|
+
*
|
|
5
|
+
* STEP 0 — quoxflow access path decision (documented here so future quoxflow
|
|
6
|
+
* work packages don't have to re-derive it):
|
|
7
|
+
*
|
|
8
|
+
* DIRECT to quoxflow (service: 'quoxflow'), NOT via the collector proxy.
|
|
9
|
+
*
|
|
10
|
+
* Evidence:
|
|
11
|
+
* - services/collector/server.js proxies quoxflow ONLY on three explicit,
|
|
12
|
+
* hand-mounted paths: `GET /quoxflow/evidence`, `GET /quoxflow/observations`,
|
|
13
|
+
* `GET /quoxflow/skills[/:id]` (server.js ~19140-19260, "STUDY-REV P6.C —
|
|
14
|
+
* QuoxFlow evidence + observations proxy" / "CLI-COCKPIT — QuoxFlow
|
|
15
|
+
* skill-library (QSKL) read-only proxy"). Nothing forwards `/api/triggers/*`
|
|
16
|
+
* or `/api/workflows/:id/activate|deactivate` — grepping server.js for
|
|
17
|
+
* 'quoxflow' turns up no catch-all proxy, only these three routes plus
|
|
18
|
+
* health-check plumbing. Fable's note that collector proxies are
|
|
19
|
+
* per-path explicit (not a wildcard) is confirmed live in this file.
|
|
20
|
+
* - quoxflow/src/api/app.ts mounts `createTriggersRoutes` at `app.route('/api/triggers', ...)`
|
|
21
|
+
* and `createWorkflowLifecycleRoutes` at `app.route('/api/workflows', ...)`
|
|
22
|
+
* (both confirmed by reading app.ts directly) — i.e. the real paths are
|
|
23
|
+
* `/api/triggers/webhooks|schedules|events` and
|
|
24
|
+
* `/api/workflows/:id/activate|deactivate`, neither proxied by collector.
|
|
25
|
+
* - quoxflow/src/api/middleware/auth.ts verifies the SAME JWT_SECRET as the
|
|
26
|
+
* QuoxCORE auth service, so a normal `quox login` bearer token is valid
|
|
27
|
+
* against quoxflow directly with zero extra auth plumbing.
|
|
28
|
+
* - cli/lib/commands/doctor.js already references `service: 'quoxflow',
|
|
29
|
+
* port: 3200` for its health check, establishing the service name — but
|
|
30
|
+
* cli/lib/core/config.js's SERVICE_PORTS never actually had a `quoxflow`
|
|
31
|
+
* key, so that health check silently resolved to the wrong URL (falls
|
|
32
|
+
* through to the base profile URL, unmodified port). Fixed alongside
|
|
33
|
+
* this fragment by adding `quoxflow: 3200` to SERVICE_PORTS, matching
|
|
34
|
+
* docker-compose.yml's `127.0.0.1:${QUOXFLOW_PORT:-3200}:3200` mapping.
|
|
35
|
+
*
|
|
36
|
+
* Conclusion: direct is both the only reachable path AND now correctly
|
|
37
|
+
* wired (QUOX_QUOXFLOW_URL env override still available per the standard
|
|
38
|
+
* getServiceUrl() convention for non-docker-compose deployments).
|
|
39
|
+
*
|
|
40
|
+
* BACKEND FINDING (not fixed here — flagged for triage): none of
|
|
41
|
+
* GET /api/triggers/webhooks, /schedules, or /events accept or filter by an
|
|
42
|
+
* org/workflow scope — quoxflow/src/api/routes/triggers.ts calls
|
|
43
|
+
* `config.webhookRegistry.getAll()` / `config.eventBus.getSubscriptions()`
|
|
44
|
+
* unfiltered, returning every registered trigger across every org/workflow
|
|
45
|
+
* on the instance. This is a cross-tenant read surface; the CLI commands
|
|
46
|
+
* here pass the data through as-is (no client-side org filtering exists to
|
|
47
|
+
* mask it) and this comment intentionally does not silently filter either,
|
|
48
|
+
* since a client-side filter would hide the real gap instead of surfacing it.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
export const triggers = {
|
|
52
|
+
'triggers.events': {
|
|
53
|
+
method: 'GET',
|
|
54
|
+
service: 'quoxflow',
|
|
55
|
+
path: () => `/api/triggers/events`,
|
|
56
|
+
tags: ['live-safe'],
|
|
57
|
+
},
|
|
58
|
+
'triggers.schedules': {
|
|
59
|
+
method: 'GET',
|
|
60
|
+
service: 'quoxflow',
|
|
61
|
+
path: () => `/api/triggers/schedules`,
|
|
62
|
+
tags: ['live-safe'],
|
|
63
|
+
},
|
|
64
|
+
'triggers.webhooks': {
|
|
65
|
+
method: 'GET',
|
|
66
|
+
service: 'quoxflow',
|
|
67
|
+
path: () => `/api/triggers/webhooks`,
|
|
68
|
+
tags: ['live-safe'],
|
|
69
|
+
},
|
|
70
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'user-library.*' endpoints — WP2.3 (docs/STREAM_CLI_PARITY_PLAN.md §2.3 #3).
|
|
3
|
+
* See cli/lib/api/endpoints/index.js for aggregation + the fragment convention.
|
|
4
|
+
*
|
|
5
|
+
* Per-org/per-user saved workflow library ("My Library"). Backend: the auth
|
|
6
|
+
* service (NOT quoxflow, NOT proxied) — services/auth/routes/user-library.js,
|
|
7
|
+
* mounted at plain `/api` (server.js:724), so the router's own
|
|
8
|
+
* `/orgs/:orgId/user-library` paths are the real, final routes.
|
|
9
|
+
*
|
|
10
|
+
* Always scoped to `user_id = req.user.id` in addition to `org_id` (see the
|
|
11
|
+
* route file's own header comment) — another user in the same org cannot see
|
|
12
|
+
* or delete these entries. No cross-tenant/cross-user leak found here, unlike
|
|
13
|
+
* the quoxflow triggers.* list routes.
|
|
14
|
+
*
|
|
15
|
+
* POST /api/orgs/:orgId/user-library body: { name, description?, definition_json, source?, source_workflow_id?, tags? }
|
|
16
|
+
* 201 { entry } | 400 name/definition_json missing | 409 duplicate name
|
|
17
|
+
* GET /api/orgs/:orgId/user-library query: { source? } ('curated'|'n8n-imported'|'mine')
|
|
18
|
+
* 200 { entries: [...] } ordered by updated_at DESC
|
|
19
|
+
* DELETE /api/orgs/:orgId/user-library/:id 200 { ok: true } | 404 (not found or wrong owner — same code, no leak)
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
export const userLibrary = {
|
|
23
|
+
'user-library.create': {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
service: 'auth',
|
|
26
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/user-library`,
|
|
27
|
+
tags: ['live-write'],
|
|
28
|
+
},
|
|
29
|
+
'user-library.delete': {
|
|
30
|
+
method: 'DELETE',
|
|
31
|
+
service: 'auth',
|
|
32
|
+
path: ({ orgId, id }) => `/api/orgs/${orgId}/user-library/${id}`,
|
|
33
|
+
tags: ['live-write'],
|
|
34
|
+
},
|
|
35
|
+
'user-library.list': {
|
|
36
|
+
method: 'GET',
|
|
37
|
+
service: 'auth',
|
|
38
|
+
path: ({ orgId }) => `/api/orgs/${orgId}/user-library`,
|
|
39
|
+
tags: ['live-safe'],
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 'users.*' 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 users = {
|
|
8
|
+
'users.me.notification-channels.list': {
|
|
9
|
+
method: 'GET',
|
|
10
|
+
service: 'auth',
|
|
11
|
+
path: () => `/api/users/me/notification-channels`,
|
|
12
|
+
tags: ['live-safe'],
|
|
13
|
+
},
|
|
14
|
+
'users.me.notification-channels.update': {
|
|
15
|
+
method: 'PUT',
|
|
16
|
+
service: 'auth',
|
|
17
|
+
path: ({ type }) => `/api/users/me/notification-channels/${type}`,
|
|
18
|
+
tags: ['live-write'],
|
|
19
|
+
},
|
|
20
|
+
};
|