{"_id":"@agenv/workstream-dashboard","_rev":"3-94542985a1b7ad42a5d6214dee3f357e","name":"@agenv/workstream-dashboard","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@agenv/workstream-dashboard","version":"0.1.0","keywords":["agenv","workstream","dashboard","bun","tmux","ttyd"],"license":"MIT","_id":"@agenv/workstream-dashboard@0.1.0","maintainers":[{"name":"albertov5","email":"avq5ac1@gmail.com"}],"homepage":"https://github.com/AlbertoV5/agenv/tree/main/packages/dashboard-server#readme","bugs":{"url":"https://github.com/AlbertoV5/agenv/issues"},"bin":{"workstream-dashboard":"dist/bin/dashboard-server.js"},"dist":{"shasum":"008a47d63818db6f74c0e1ab3b3ef95fd13c0f90","tarball":"https://registry.npmjs.org/@agenv/workstream-dashboard/-/workstream-dashboard-0.1.0.tgz","fileCount":31,"integrity":"sha512-gQk9u0lx/30dG5IbowIkDeummr8zZV7uWYTTI+DdTf1fkPCooMk64lcB3GIg2juDL3FCOIzUs4jXRX0yMotoUQ==","signatures":[{"sig":"MEUCIApVSHfGI1yPQms91ufftVqZfOh56JtdU887+Ch5QNAFAiEA1/T4OqjTPXHkXKZF4csqDB/DOQPKCtPp6+mF+4YPzL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99257},"main":"./dist/src/index.js","type":"module","module":"./dist/src/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"import":"./dist/src/index.js"}},"gitHead":"69efecf07a3d41b367c7f44609656bb218c96d54","scripts":{"dev":"bun --hot ./bin/dashboard-server.ts --repo-root ../..","test":"bun test","build":"rm -rf dist && bun ./build.ts","start":"bun ./dist/bin/dashboard-server.js","typecheck":"tsc --noEmit","prepublishOnly":"bun run build && bun run test && bun run typecheck"},"_npmUser":{"name":"albertov5","email":"avq5ac1@gmail.com"},"repository":{"url":"git+https://github.com/AlbertoV5/agenv.git","type":"git","directory":"packages/dashboard-server"},"_npmVersion":"11.7.0","description":"Local Bun dashboard for AgENV workstreams and tmux observability","directories":{},"_nodeVersion":"25.4.0","dependencies":{"hono":"^4.11.4","@agenv/workstreams":"^0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.6"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/workstream-dashboard_0.1.0_1776366988379_0.5050807095346195","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agenv/workstream-dashboard","version":"0.1.2","keywords":["agenv","workstream","dashboard","bun","tmux","ttyd"],"license":"MIT","_id":"@agenv/workstream-dashboard@0.1.2","maintainers":[{"name":"albertov5","email":"avq5ac1@gmail.com"}],"homepage":"https://github.com/AlbertoV5/agenv/tree/main/packages/dashboard-server#readme","bugs":{"url":"https://github.com/AlbertoV5/agenv/issues"},"bin":{"workstream-dashboard":"dist/bin/dashboard-server.js"},"dist":{"shasum":"199e75ac8849a647c7829a071259f51a82bb84a0","tarball":"https://registry.npmjs.org/@agenv/workstream-dashboard/-/workstream-dashboard-0.1.2.tgz","fileCount":31,"integrity":"sha512-MKXbCMHX//VZWzFycLyebS4t0kieAlM41kx/8zN6hft1HiVt0RI8Kmn6c7lbNjedsYknYYlULm4UFQwV8Ch1MQ==","signatures":[{"sig":"MEUCIQCGcngmaDsm4s6R7ASE+g2DxGd/eoj5rOHUVq4Ey6136gIgF6lwCCjUAKTHk6fZlOJaKRQX9m7HnVYbndXVB/9yWyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agenv%2fworkstream-dashboard@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99257},"main":"./dist/src/index.js","type":"module","module":"./dist/src/index.js","engines":{"bun":">=1.3.0"},"exports":{".":{"import":"./dist/src/index.js"}},"gitHead":"e8f59fb4075ad6aea2eb8691683df952909f332f","scripts":{"dev":"bun --hot ./bin/dashboard-server.ts --repo-root ../..","test":"bun test","build":"rm -rf dist && bun ./build.ts","start":"bun ./dist/bin/dashboard-server.js","typecheck":"tsc --noEmit","prepublishOnly":"bun run build && bun run test && bun run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4471cd1-af40-438f-ada6-d34cac4bf53e"}},"repository":{"url":"git+https://github.com/AlbertoV5/agenv.git","type":"git","directory":"packages/dashboard-server"},"_npmVersion":"11.11.0","description":"Local Bun dashboard for AgENV workstreams and tmux observability","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.11.4","@agenv/workstreams":"^0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.6"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/workstream-dashboard_0.1.2_1776367523213_0.034709134302050026","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agenv/workstream-dashboard","version":"0.1.3","description":"Local Bun dashboard for AgENV workstreams and tmux observability","main":"./dist/src/index.js","module":"./dist/src/index.js","type":"module","bin":{"workstream-dashboard":"dist/bin/dashboard-server.js"},"repository":{"type":"git","url":"git+https://github.com/AlbertoV5/agenv.git","directory":"packages/dashboard-server"},"homepage":"https://github.com/AlbertoV5/agenv/tree/main/packages/dashboard-server#readme","bugs":{"url":"https://github.com/AlbertoV5/agenv/issues"},"license":"MIT","keywords":["agenv","workstream","dashboard","bun","tmux","ttyd"],"exports":{".":{"import":"./dist/src/index.js"}},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && bun ./build.ts","dev":"bun --hot ./bin/dashboard-server.ts --repo-root ../..","start":"bun ./dist/bin/dashboard-server.js","test":"bun test tests","typecheck":"tsc --noEmit","prepublishOnly":"bun run build && bun run test && bun run typecheck"},"dependencies":{"@agenv/workstreams":"^0.5.1","hono":"^4.11.4"},"devDependencies":{"@types/bun":"^1.3.6"},"peerDependencies":{"typescript":"^5"},"engines":{"bun":">=1.3.0"},"gitHead":"5433686913403d448372e4ac8dc815a24f7c70d1","_id":"@agenv/workstream-dashboard@0.1.3","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-fhN8tiKV3osSmzRUKFElLuyDJXIQdAPecH2QL7S1O8yDlXZksv+BeZUjjiGI6pb7rjwcsJZRgESPC0dpSaZMjg==","shasum":"7d7fdbde6b407ac65d983e257d46e04b547e6247","tarball":"https://registry.npmjs.org/@agenv/workstream-dashboard/-/workstream-dashboard-0.1.3.tgz","fileCount":31,"unpackedSize":99263,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agenv%2fworkstream-dashboard@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID8V1ds3YbViGjgpidYHTOvGcgeaWeYrPatufxNBqC+NAiBF5YhZvCTyKE9TH/NtA9XJTijMWaiHqaRRE5GjATbvEA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4471cd1-af40-438f-ada6-d34cac4bf53e"}},"directories":{},"maintainers":[{"name":"albertov5","email":"avq5ac1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/workstream-dashboard_0.1.3_1776369283578_0.3618113769649245"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-16T19:16:28.296Z","modified":"2026-04-16T19:54:44.053Z","0.1.0":"2026-04-16T19:16:28.544Z","0.1.2":"2026-04-16T19:25:23.362Z","0.1.3":"2026-04-16T19:54:43.749Z"},"bugs":{"url":"https://github.com/AlbertoV5/agenv/issues"},"license":"MIT","homepage":"https://github.com/AlbertoV5/agenv/tree/main/packages/dashboard-server#readme","keywords":["agenv","workstream","dashboard","bun","tmux","ttyd"],"repository":{"type":"git","url":"git+https://github.com/AlbertoV5/agenv.git","directory":"packages/dashboard-server"},"description":"Local Bun dashboard for AgENV workstreams and tmux observability","maintainers":[{"name":"albertov5","email":"avq5ac1@gmail.com"}],"readme":"# @agenv/workstream-dashboard\n\nLocal-only Bun dashboard for AgENV workstreams.\n\n## Install\n\nThis package is Bun-only.\n\nInstall Bun first, then install the package:\n\n```bash\n# install Bun: https://bun.sh\nnpm install -g @agenv/workstream-dashboard\n```\n\nThe dashboard reads an existing AgENV repository on disk, so you still need a checked-out repo with `work/` state and the `@agenv/workstreams` data model available through the repo contents.\n\n## What it shows\n\n- canonical current-workstream state from `work/<stream-id>/tasks.json`\n- runtime overlays derived from the canonical workstream snapshot\n- tmux session observability for matching workstream activity\n- optional embedded `ttyd` terminal views for read-only inspection\n\n## Local prerequisites\n\nThe dashboard is intentionally local-only in v1:\n\n- it always binds to `127.0.0.1`\n- embedded terminal views only proxy loopback `ttyd` targets\n- terminal observability is read-only and should be treated as inspection only\n\nInstall or verify the local tools it depends on:\n\n```bash\n# macOS (Homebrew)\nbrew install tmux ttyd\n\n# Debian/Ubuntu\nsudo apt-get install tmux ttyd\n\n# verify\ntmux -V\nttyd -v\n```\n\nDependency roles:\n\n- `tmux`: required to observe the live implementation/supervision sessions the dashboard correlates with the current workstream.\n- `ttyd`: required only for browser-embedded terminal views. If `ttyd` is missing, canonical status still works, but terminal views remain unavailable.\n\n## Start the server\n\nFrom an AgENV repo root:\n\n```bash\nworkstream-dashboard --repo-root \"$(pwd)\"\n```\n\nOr with an explicit path:\n\n```bash\nworkstream-dashboard --repo-root /absolute/path/to/repo\n```\n\nOptional flags:\n\n- `--repo-root <path>`: repo to inspect; defaults to the current directory\n- `--port <port>`: local port; defaults to `43119`\n\nOn startup the server prints a local URL such as `http://127.0.0.1:43119/`.\n\n## Routes and pages\n\n### HTML pages\n\n- `/`: current-workstream dashboard\n- `/terminal-views/:terminalViewId`: standalone page for one read-only terminal view\n- `/terminal-views/:terminalViewId/ttyd`: proxied local `ttyd` target used by the dashboard iframe\n\n### JSON + SSE endpoints\n\n- `/api/health`: server config plus observability capability summary\n- `/api/current-workstream/snapshot`: full dashboard snapshot\n- `/api/current-workstream/status`: canonical status summary\n- `/api/current-workstream/tree`: canonical tree snapshot (`?batch_id=01.02` optional)\n- `/api/current-workstream/runtime`: canonical runtime summary\n- `/api/current-workstream/supervision`: canonical supervision summary\n- `/api/current-workstream/observability`: tmux + terminal observability summary\n- `/api/current-workstream/live`: SSE stream for snapshot/observability refresh events\n\n## Using the current-workstream dashboard\n\n1. Set the active workstream with `work current --set \"<stream-id>\"`.\n2. Start the dashboard server and open `/` in a browser.\n3. Use the summary cards, stage list, and task tree to inspect canonical progress.\n4. Use the tmux panel to see matched local sessions for the current workstream.\n5. If `ttyd` is available, choose a terminal view to embed a read-only terminal for that session.\n\nIf the dashboard and observability disagree, trust the canonical snapshot first.\n\n## Source of truth vs observability\n\nThe dashboard has three layers:\n\n1. **Canonical state**: `tasks.json` is the source of truth. Status, tree, runtime, and supervision summaries are derived from persisted workstream state.\n2. **tmux observability**: live session discovery is correlated against canonical identifiers. It can be ready, degraded, unavailable, missing, stale, or ambiguous.\n3. **`ttyd` terminal views**: browser-friendly, read-only views layered on top of tmux sessions when local `ttyd` is available.\n\nOnly the first layer changes workstream truth. tmux and `ttyd` help operators inspect what is happening, but they do not determine completion, failure, or review state.\n","readmeFilename":"README.md"}