{"_id":"@glidemq/dashboard","_rev":"4-b3d3504eb844251d4c3461e88b926646","name":"@glidemq/dashboard","dist-tags":{"latest":"0.4.1"},"versions":{"0.2.0":{"name":"@glidemq/dashboard","version":"0.2.0","keywords":["glide-mq","dashboard","queue","monitor","valkey","redis"],"license":"Apache-2.0","_id":"@glidemq/dashboard@0.2.0","maintainers":[{"name":"avifenesh","email":"aviarchi1994@gmail.com"}],"homepage":"https://github.com/avifenesh/glidemq-dashboard#readme","bugs":{"url":"https://github.com/avifenesh/glidemq-dashboard/issues"},"dist":{"shasum":"48f3eb3a8897ed2ee80a861a4ca44774d993e320","tarball":"https://registry.npmjs.org/@glidemq/dashboard/-/dashboard-0.2.0.tgz","fileCount":7,"integrity":"sha512-Qy8lV+V1lWCY0qaFLEfQ9zS3DIUPS79xQ7b8ShJE6p6hKJBDXt7lsEyZFDgypfE8rOmANMrbCC/GZB6L87dIYg==","signatures":[{"sig":"MEQCIFI+1rbe0O3WkZbVRIlfRM6yOYV+SOUZ99WwegtLrGPTAiBF9K1daQPn+QsNSr2bai9hro//TG8PMrvHc8SZ/dm+UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99636},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ff8b49ca137988d971bd6caf54d6a07e21e55b2a","scripts":{"test":"vitest run","build":"tsc && node scripts/copy-assets.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"avifenesh","email":"aviarchi1994@gmail.com"},"repository":{"url":"git+https://github.com/avifenesh/glidemq-dashboard.git","type":"git"},"_npmVersion":"10.9.4","description":"Web dashboard for glide-mq queue monitoring and management","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3","express":"^5","glide-mq":"file:../glide-mq","supertest":"^7","typescript":"^5","@types/node":"^22","@types/express":"^5","@types/supertest":"^6"},"peerDependencies":{"express":"^4 || ^5","glide-mq":">=0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/dashboard_0.2.0_1771911938824_0.35252539060709354","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@glidemq/dashboard","version":"0.3.0","keywords":["glide-mq","dashboard","queue","monitor","valkey","redis","ai","observability"],"license":"Apache-2.0","_id":"@glidemq/dashboard@0.3.0","maintainers":[{"name":"avifenesh","email":"aviarchi1994@gmail.com"}],"homepage":"https://avifenesh.github.io/glide-mq.dev/integrations/dashboard","bugs":{"url":"https://github.com/avifenesh/glidemq-dashboard/issues"},"dist":{"shasum":"30ebd852c41ad32f5deea30e6511a9ef4ba7a9ae","tarball":"https://registry.npmjs.org/@glidemq/dashboard/-/dashboard-0.3.0.tgz","fileCount":8,"integrity":"sha512-yGK6NaZAhFDttJApFuAnDUMmYfpZQffhw6sZevGwTHbNYWQPp8KzhTohU4/MuGmrp5Zq1uwHjRRVF9zPIA8Dkw==","signatures":[{"sig":"MEUCIDhYPp6W61dzxFMYvjGNeFVX/1v7aSl+o0OJlazZhpUdAiEA6OrYgPv5JsN/bO3DCeJv+SoNMd/XhnbgxWHjsMB39f4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147154},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"85e0ea2f1499b6c13a6435c43ecba08e25613d91","scripts":{"test":"vitest run","build":"tsc && node scripts/copy-assets.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"avifenesh","email":"aviarchi1994@gmail.com"},"repository":{"url":"git+https://github.com/avifenesh/glidemq-dashboard.git","type":"git"},"_npmVersion":"10.9.4","description":"Web dashboard for glide-mq - queue monitoring, management, and AI observability","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3","express":"^5","glide-mq":"^0.14.0","supertest":"^7","typescript":"^5","@types/node":"^22","@types/express":"^5","@types/supertest":"^6"},"peerDependencies":{"express":"^4 || ^5","glide-mq":">=0.14.0"},"_npmOperationalInternal":{"tmp":"tmp/dashboard_0.3.0_1774689289695_0.12354170971517076","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@glidemq/dashboard","version":"0.4.0","keywords":["glide-mq","dashboard","queue","monitor","valkey","redis","ai","observability"],"license":"Apache-2.0","_id":"@glidemq/dashboard@0.4.0","maintainers":[{"name":"avifenesh","email":"aviarchi1994@gmail.com"}],"homepage":"https://glidemq.dev/integrations/dashboard","bugs":{"url":"https://github.com/avifenesh/glidemq-dashboard/issues"},"dist":{"shasum":"ef80ecf414bd30c6aed27477ade261e0552eaf80","tarball":"https://registry.npmjs.org/@glidemq/dashboard/-/dashboard-0.4.0.tgz","fileCount":9,"integrity":"sha512-uWusu/opfMYU46SaYCwAukNM0CTf/326aJWrSOkRsYTNbW/e50rqgiEELjyf+ZOiI8DFvym9nbimwmgHq+mxfw==","signatures":[{"sig":"MEQCIERnCPpJTvStgnFLjNl66TalAZTP3sodtJa2f7G1dawLAiBdc/lDgohAr9pl+nJ7nRTkWEoJV4hMVzS7/ofR3aGAKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@glidemq%2fdashboard@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153235},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"95a02f2f46f7dd2bcbbbea8a9e5e672e07ec0bf8","scripts":{"test":"vitest run","build":"tsc && node scripts/copy-assets.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"avifenesh","email":"aviarchi1994@gmail.com"},"repository":{"url":"git+https://github.com/avifenesh/glidemq-dashboard.git","type":"git"},"_npmVersion":"10.9.4","description":"Web dashboard for glide-mq - queue monitoring, management, and AI observability","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3","express":"^5","glide-mq":"^0.14.0","supertest":"^7","typescript":"^5","@types/node":"^22","@types/express":"^5","@types/supertest":"^6"},"peerDependencies":{"express":"^4 || ^5","glide-mq":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/dashboard_0.4.0_1775130574332_0.6038720288659671","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@glidemq/dashboard","version":"0.4.1","description":"Web dashboard for glide-mq - queue monitoring, management, and AI observability","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc && node scripts/copy-assets.js","test":"vitest run","clean":"rm -rf dist","prepublishOnly":"npm run build"},"homepage":"https://glidemq.dev/integrations/dashboard","repository":{"type":"git","url":"git+https://github.com/avifenesh/glidemq-dashboard.git"},"license":"Apache-2.0","peerDependencies":{"express":"^4 || ^5","glide-mq":">=0.15.0"},"devDependencies":{"@types/express":"^5","@types/node":"^22","@types/supertest":"^6","express":"^5","glide-mq":"^0.15.0","supertest":"^7","typescript":"^5","vitest":"^3"},"keywords":["glide-mq","dashboard","queue","monitor","valkey","redis","ai","observability"],"_id":"@glidemq/dashboard@0.4.1","gitHead":"7176409d423a737e848e6c2e79a40c199f69cf96","bugs":{"url":"https://github.com/avifenesh/glidemq-dashboard/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-E0KqNnn6OPfQI+zsnSc3j48uU6mY9BQmjGkk/GgTO3JWUNcGmuQlp01BMyE8D1HW0UMnUAL87YrmiUCnfya27w==","shasum":"f7f335f9880fca8327720628c3f7a0fb6a19d281","tarball":"https://registry.npmjs.org/@glidemq/dashboard/-/dashboard-0.4.1.tgz","fileCount":9,"unpackedSize":153235,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@glidemq%2fdashboard@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHS/zrLeTM5Ew2IiRoyiYDospmdvikEidQinvRQEhEP4AiBG72M758jKey0wZGFmy2Qk+JPFbaWNpZvvGryB9tZGzA=="}]},"_npmUser":{"name":"avifenesh","email":"aviarchi1994@gmail.com"},"directories":{},"maintainers":[{"name":"avifenesh","email":"aviarchi1994@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dashboard_0.4.1_1775462489787_0.35530600549946034"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T05:45:38.726Z","modified":"2026-04-06T08:01:30.259Z","0.2.0":"2026-02-24T05:45:38.997Z","0.3.0":"2026-03-28T09:14:49.853Z","0.4.0":"2026-04-02T11:49:34.488Z","0.4.1":"2026-04-06T08:01:29.924Z"},"bugs":{"url":"https://github.com/avifenesh/glidemq-dashboard/issues"},"license":"Apache-2.0","homepage":"https://glidemq.dev/integrations/dashboard","keywords":["glide-mq","dashboard","queue","monitor","valkey","redis","ai","observability"],"repository":{"type":"git","url":"git+https://github.com/avifenesh/glidemq-dashboard.git"},"description":"Web dashboard for glide-mq - queue monitoring, management, and AI observability","maintainers":[{"name":"avifenesh","email":"aviarchi1994@gmail.com"}],"readme":"# @glidemq/dashboard\n\n[![npm](https://img.shields.io/npm/v/@glidemq/dashboard)](https://www.npmjs.com/package/@glidemq/dashboard)\n[![license](https://img.shields.io/npm/l/@glidemq/dashboard)](https://github.com/avifenesh/glidemq-dashboard/blob/main/LICENSE)\n\nReal-time dashboard for [glide-mq](https://github.com/avifenesh/glide-mq) - queue monitoring with AI observability. Drop-in Express middleware, no frontend build required.\n\n## Why\n\n- **Instant visibility** - see job counts, states, workers, and throughput without writing tooling\n- **Live updates** - SSE pushes job events to the browser as they happen, no polling\n- **Operational control** - pause, resume, drain, retry, and clean queues from a point-and-click UI\n\n## Install\n\n```bash\nnpm install @glidemq/dashboard glide-mq express\n```\n\nRequires **glide-mq >= 0.14.0** and **Express 4 or 5**.\n\n## Quick start\n\n```typescript\nimport express from \"express\";\nimport { Queue } from \"glide-mq\";\nimport { createDashboard } from \"@glidemq/dashboard\";\n\nconst app = express();\nconst queue = new Queue(\"payments\", {\n  connection: { addresses: [{ host: \"localhost\", port: 6379 }] },\n});\n\napp.use(\"/dashboard\", createDashboard([queue]));\napp.listen(3000);\n// Open http://localhost:3000/dashboard\n```\n\n## AI-native features\n\nJob detail views include AI fields when present: `usage` (record-based token/cost breakdown), `signals`, `budgetKey`, `fallbackIndex`, and `tpmTokens`.\n\nThree dedicated endpoints expose AI orchestration state:\n\n- **`GET /api/queues/:name/flows/:id/usage`** - Aggregated token/cost usage across all jobs in a flow. Returns the combined usage record.\n- **`GET /api/queues/:name/flows/:id/budget`** - Budget state for a flow - current spend, per-category caps, remaining budget. Returns 404 if no budget is set.\n- **`GET /api/usage/summary`** - Rolling usage totals across all mounted queues or a `?queues=` subset. Supports `start`, `end`, `window`, and `windowMs`.\n- **`GET /api/queues/:name/jobs/:id/stream`** - SSE endpoint for streaming job output chunks. Supports `?lastId=` for resumption. Returns `event: chunk` messages with entry fields as data.\n\nSSE event stream (`/api/events`) now includes `usage`, `suspended`, and `budget-exceeded` events alongside the standard queue lifecycle events.\n\nFor write-side flow orchestration over HTTP (`POST /flows`, `GET /flows/:id`, `GET /flows/:id/tree`, `DELETE /flows/:id`), use the core glide-mq proxy or the HTTP wrapper integrations: `@glidemq/hono`, `@glidemq/fastify`, and `@glidemq/hapi`. The dashboard stays focused on inspection and operations.\n\n## API\n\n```typescript\ncreateDashboard(queues: Queue[], opts?: DashboardOptions): Router\n```\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `queueEvents` | `QueueEvents[]` | `[]` | Instances for real-time SSE events |\n| `readOnly` | `boolean` | `false` | Block all mutation routes with 403 |\n| `authorize` | `(req, action) => boolean \\| Promise<boolean>` | - | Per-action authorization callback |\n\n**Action strings:** `queue:pause`, `queue:resume`, `queue:obliterate`, `queue:drain`, `queue:retryAll`, `queue:clean`, `job:remove`, `job:retry`, `job:promote`, `job:changePriority`, `job:changeDelay`, `scheduler:upsert`, `scheduler:remove`\n\n```typescript\napp.use(\n  \"/dashboard\",\n  createDashboard(queues, {\n    authorize: (req, action) => {\n      if (action === \"queue:obliterate\") return req.session?.user?.role === \"admin\";\n      return true;\n    },\n  })\n);\n```\n\n## Limitations\n\n- Express only. No built-in adapter for Fastify, Hono, or Koa.\n- Middleware, not a standalone server - mount it on an existing Express app.\n- Requires glide-mq `Queue` instances. Does not connect to Valkey/Redis directly.\n\n## Links\n\n- [glide-mq](https://github.com/avifenesh/glide-mq) - core library\n- [Full documentation](https://glidemq.dev/integrations/dashboard)\n- [Issues](https://github.com/avifenesh/glidemq-dashboard/issues)\n- [@glidemq/nestjs](https://github.com/avifenesh/glidemq-nestjs) | [@glidemq/hono](https://github.com/avifenesh/glidemq-hono) | [@glidemq/fastify](https://github.com/avifenesh/glidemq-fastify) | [@glidemq/hapi](https://github.com/avifenesh/glidemq-hapi)\n\n## License\n\n[Apache-2.0](./LICENSE)\n","readmeFilename":"README.md"}