tconsole: init

This introduces the 'tconsole' (terminal console), the default
interface to show in /dev/tty1 on a Metropolis node.

Currently it just shows some basic status in a single page. Upcoming
changes will reintroduce a simple log dump on a different page, as well
as entirely new features like supervision tree inspection.

To iterate quickly on the console, a 'standalone' target is added which
exercises the console on the user's terminal with fake node data.
However only the actual console in Linux displays colours as intended.

Change-Id: I5cfba2bdb320daa080a073e76bf0494aeab6a4d4
Reviewed-on: https://review.monogon.dev/c/monogon/+/3371
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/core/tconsole/BUILD.bazel b/metropolis/node/core/tconsole/BUILD.bazel
new file mode 100644
index 0000000..c8ca99e
--- /dev/null
+++ b/metropolis/node/core/tconsole/BUILD.bazel
@@ -0,0 +1,24 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "tconsole",
+    srcs = [
+        "colors.go",
+        "draw.go",
+        "page_status.go",
+        "tconsole.go",
+    ],
+    importpath = "source.monogon.dev/metropolis/node/core/tconsole",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//metropolis/node/core/network",
+        "//metropolis/node/core/roleserve",
+        "//metropolis/proto/common",
+        "//metropolis/version",
+        "//osbase/event",
+        "//osbase/supervisor",
+        "//version",
+        "@com_github_gdamore_tcell_v2//:tcell",
+        "@com_github_rivo_uniseg//:uniseg",
+    ],
+)