Skip to content

[dashboard DDX-14] CLI surface + auto-launch #424

Description

@rickylabs

DDX-14: CLI + deep-link surface + generator emission

Summary

The thin CLI wrappers, the console banner, the stable deep-link URL scheme every seam targets, and the generator edits that emit WithUrl/withCommand into Aspire.

Scope

  • Generator emission: in packages/cli/src/kernel/templates/aspire/helpers/register/generate-register-apps.ts (+ register-services), emit per app/service .withUrl("http://localhost:${dashboardPort}/resource/${resourceName}", "NetScript Dashboard") + one apphost-level entry for /; emit the two fixed framework withCommands (open-netscript-dashboard, inspect-registry/inspect-saga-run) via Seam B until [dashboard DDX-1] @netscript/aspire command + app resource kinds #411 lands.
  • Stable URL scheme (dashboard owns): /, /resource/{name}, /workers|/sagas|/triggers|/streams, /plugins, /plugins/{id}, /config.
  • CLI: netscript dashboard open (--no-open, --resource {name}, guard headless/CI), netscript dashboard url (pure print, scriptable, --resource/--panel), console banner on netscript dev printing both dashboard URLs. All read the single port source; exit 0 with URL on stdout.
  • Dashboard→Aspire out-links: {aspireBase}/traces/detail/{id}, /structuredlogs?resource=, /consolelogs/resource/, /metrics/resource/.
  • Dashboard→Scalar: /api/docs (+ operation anchor) deep-links only.

Non-goals

  • Do not auto-open a browser on netscript dev (print URL only).
  • Do not re-render Aspire trace/log/metric pages or a Scalar operation list — links only.
  • Scalar→dashboard is essentially nil: Scalar has no plugin/callback surface. The only lever is spec-authored externalDocs/x-* on the generated OpenAPI doc (optional polish, not a load-bearing seam).

Acceptance criteria

  • WithUrl link appears in Aspire Endpoints column; one click lands on the deep-linked resource view — no OTLP rendering.
  • netscript dashboard url --panel sagas prints a valid deep link; CI-safe print-only path works.
  • Out-link patterns resolve to live Aspire/Scalar pages.

Dependencies

#411 (final withCommand via Seam A), #415 (URL scheme consumer), #423 (/resource/{name} data). Optional: OpenAPI externalDocs emission at contract-build.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions