@alwaysai/device-agent 0.0.2

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.
Files changed (151) hide show
  1. package/lib/application-control/application-control.d.ts +41 -0
  2. package/lib/application-control/application-control.d.ts.map +1 -0
  3. package/lib/application-control/application-control.js +197 -0
  4. package/lib/application-control/application-control.js.map +1 -0
  5. package/lib/application-control/models.d.ts +12 -0
  6. package/lib/application-control/models.d.ts.map +1 -0
  7. package/lib/application-control/models.js +44 -0
  8. package/lib/application-control/models.js.map +1 -0
  9. package/lib/application-control/utils.d.ts +16 -0
  10. package/lib/application-control/utils.d.ts.map +1 -0
  11. package/lib/application-control/utils.js +62 -0
  12. package/lib/application-control/utils.js.map +1 -0
  13. package/lib/constants.d.ts +15 -0
  14. package/lib/constants.d.ts.map +1 -0
  15. package/lib/constants.js +22 -0
  16. package/lib/constants.js.map +1 -0
  17. package/lib/device-control/device-control.d.ts +4 -0
  18. package/lib/device-control/device-control.d.ts.map +1 -0
  19. package/lib/device-control/device-control.js +20 -0
  20. package/lib/device-control/device-control.js.map +1 -0
  21. package/lib/docker/docker-cmd.d.ts +4 -0
  22. package/lib/docker/docker-cmd.d.ts.map +1 -0
  23. package/lib/docker/docker-cmd.js +16 -0
  24. package/lib/docker/docker-cmd.js.map +1 -0
  25. package/lib/docker/docker-compose-cmd.d.ts +5 -0
  26. package/lib/docker/docker-compose-cmd.d.ts.map +1 -0
  27. package/lib/docker/docker-compose-cmd.js +16 -0
  28. package/lib/docker/docker-compose-cmd.js.map +1 -0
  29. package/lib/environment.d.ts +4 -0
  30. package/lib/environment.d.ts.map +1 -0
  31. package/lib/environment.js +21 -0
  32. package/lib/environment.js.map +1 -0
  33. package/lib/index.d.ts +3 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +19 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/root.d.ts +2 -0
  38. package/lib/root.d.ts.map +1 -0
  39. package/lib/root.js +18 -0
  40. package/lib/root.js.map +1 -0
  41. package/lib/subcommands/app/app.d.ts +36 -0
  42. package/lib/subcommands/app/app.d.ts.map +1 -0
  43. package/lib/subcommands/app/app.js +218 -0
  44. package/lib/subcommands/app/app.js.map +1 -0
  45. package/lib/subcommands/app/index.d.ts +2 -0
  46. package/lib/subcommands/app/index.d.ts.map +1 -0
  47. package/lib/subcommands/app/index.js +23 -0
  48. package/lib/subcommands/app/index.js.map +1 -0
  49. package/lib/subcommands/device-control.d.ts +2 -0
  50. package/lib/subcommands/device-control.d.ts.map +1 -0
  51. package/lib/subcommands/device-control.js +19 -0
  52. package/lib/subcommands/device-control.js.map +1 -0
  53. package/lib/subcommands/index.d.ts +2 -0
  54. package/lib/subcommands/index.d.ts.map +1 -0
  55. package/lib/subcommands/index.js +14 -0
  56. package/lib/subcommands/index.js.map +1 -0
  57. package/lib/subcommands/login.d.ts +5 -0
  58. package/lib/subcommands/login.d.ts.map +1 -0
  59. package/lib/subcommands/login.js +27 -0
  60. package/lib/subcommands/login.js.map +1 -0
  61. package/lib/subcommands/test-app.d.ts +5 -0
  62. package/lib/subcommands/test-app.d.ts.map +1 -0
  63. package/lib/subcommands/test-app.js +33 -0
  64. package/lib/subcommands/test-app.js.map +1 -0
  65. package/lib/util/copy-dir.d.ts +5 -0
  66. package/lib/util/copy-dir.d.ts.map +1 -0
  67. package/lib/util/copy-dir.js +14 -0
  68. package/lib/util/copy-dir.js.map +1 -0
  69. package/lib/util/run-cli-cmd.d.ts +5 -0
  70. package/lib/util/run-cli-cmd.d.ts.map +1 -0
  71. package/lib/util/run-cli-cmd.js +24 -0
  72. package/lib/util/run-cli-cmd.js.map +1 -0
  73. package/lib/util/spawner/gnu-spawner.d.ts +9 -0
  74. package/lib/util/spawner/gnu-spawner.d.ts.map +1 -0
  75. package/lib/util/spawner/gnu-spawner.js +102 -0
  76. package/lib/util/spawner/gnu-spawner.js.map +1 -0
  77. package/lib/util/spawner/js-spawner.d.ts +5 -0
  78. package/lib/util/spawner/js-spawner.d.ts.map +1 -0
  79. package/lib/util/spawner/js-spawner.js +89 -0
  80. package/lib/util/spawner/js-spawner.js.map +1 -0
  81. package/lib/util/spawner/types.d.ts +28 -0
  82. package/lib/util/spawner/types.d.ts.map +1 -0
  83. package/lib/util/spawner/types.js +3 -0
  84. package/lib/util/spawner/types.js.map +1 -0
  85. package/lib/util/spawner-base/index.d.ts +17 -0
  86. package/lib/util/spawner-base/index.d.ts.map +1 -0
  87. package/lib/util/spawner-base/index.js +30 -0
  88. package/lib/util/spawner-base/index.js.map +1 -0
  89. package/lib/util/spawner-base/run-foreground-sync.d.ts +3 -0
  90. package/lib/util/spawner-base/run-foreground-sync.d.ts.map +1 -0
  91. package/lib/util/spawner-base/run-foreground-sync.js +18 -0
  92. package/lib/util/spawner-base/run-foreground-sync.js.map +1 -0
  93. package/lib/util/spawner-base/run-foreground.d.ts +3 -0
  94. package/lib/util/spawner-base/run-foreground.d.ts.map +1 -0
  95. package/lib/util/spawner-base/run-foreground.js +49 -0
  96. package/lib/util/spawner-base/run-foreground.js.map +1 -0
  97. package/lib/util/spawner-base/run-streaming.d.ts +4 -0
  98. package/lib/util/spawner-base/run-streaming.d.ts.map +1 -0
  99. package/lib/util/spawner-base/run-streaming.js +35 -0
  100. package/lib/util/spawner-base/run-streaming.js.map +1 -0
  101. package/lib/util/spawner-base/run.d.ts +4 -0
  102. package/lib/util/spawner-base/run.d.ts.map +1 -0
  103. package/lib/util/spawner-base/run.js +56 -0
  104. package/lib/util/spawner-base/run.js.map +1 -0
  105. package/lib/web/index.html +229 -0
  106. package/lib/web/static/Karla.css +18 -0
  107. package/lib/web/static/bootstrap-4.3.1.min.css +7 -0
  108. package/lib/web/static/bootstrap-4.3.1.min.js +7 -0
  109. package/lib/web/static/favicon.ico +0 -0
  110. package/lib/web/static/jquery-3.3.1.slim.min.js +2 -0
  111. package/lib/web/static/popper-1.14.7.min.js +5 -0
  112. package/lib/web/web-interface.d.ts +2 -0
  113. package/lib/web/web-interface.d.ts.map +1 -0
  114. package/lib/web/web-interface.js +74 -0
  115. package/lib/web/web-interface.js.map +1 -0
  116. package/package.json +89 -0
  117. package/readme.md +104 -0
  118. package/src/application-control/application-control.ts +233 -0
  119. package/src/application-control/models.ts +40 -0
  120. package/src/application-control/utils.ts +64 -0
  121. package/src/constants.ts +29 -0
  122. package/src/device-control/device-control.ts +16 -0
  123. package/src/docker/docker-cmd.ts +12 -0
  124. package/src/docker/docker-compose-cmd.ts +12 -0
  125. package/src/environment.ts +20 -0
  126. package/src/index.ts +18 -0
  127. package/src/root.ts +18 -0
  128. package/src/subcommands/app/app.ts +216 -0
  129. package/src/subcommands/app/index.ts +32 -0
  130. package/src/subcommands/device-control.ts +16 -0
  131. package/src/subcommands/index.ts +11 -0
  132. package/src/subcommands/login.ts +24 -0
  133. package/src/subcommands/test-app.ts +30 -0
  134. package/src/util/copy-dir.ts +10 -0
  135. package/src/util/run-cli-cmd.ts +18 -0
  136. package/src/util/spawner/gnu-spawner.ts +114 -0
  137. package/src/util/spawner/js-spawner.ts +110 -0
  138. package/src/util/spawner/types.ts +28 -0
  139. package/src/util/spawner-base/index.ts +28 -0
  140. package/src/util/spawner-base/run-foreground-sync.ts +16 -0
  141. package/src/util/spawner-base/run-foreground.ts +49 -0
  142. package/src/util/spawner-base/run-streaming.ts +40 -0
  143. package/src/util/spawner-base/run.ts +60 -0
  144. package/src/web/index.html +229 -0
  145. package/src/web/static/Karla.css +18 -0
  146. package/src/web/static/bootstrap-4.3.1.min.css +7 -0
  147. package/src/web/static/bootstrap-4.3.1.min.js +7 -0
  148. package/src/web/static/favicon.ico +0 -0
  149. package/src/web/static/jquery-3.3.1.slim.min.js +2 -0
  150. package/src/web/static/popper-1.14.7.min.js +5 -0
  151. package/src/web/web-interface.ts +89 -0
@@ -0,0 +1,229 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6
+ <meta name="description" content="">
7
+ <meta name="author" content="">
8
+ <link rel="icon" href="static/favicon.ico">
9
+ <title>alwaysAI Device Agent</title>
10
+
11
+ <script src="/socket.io/socket.io.js"></script>
12
+
13
+ <!-- Bootstrap CSS
14
+ ================================================== -->
15
+ <script src="static/jquery-3.3.1.slim.min.js"
16
+ integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous">
17
+ </script>
18
+ <script src="static/popper-1.14.7.min.js"
19
+ integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
20
+ </script>
21
+ <link rel="stylesheet" href="static/bootstrap-4.3.1.min.css"
22
+ integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
23
+ <script src="static/bootstrap-4.3.1.min.js"
24
+ integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
25
+ </script>
26
+ <!--link href="static/bootstrap/css/bootstrap.min.css" rel="stylesheet"-->
27
+
28
+ <!-- Own styles
29
+ ================================================== -->
30
+ <link href="static/Karla.css" rel="stylesheet">
31
+ <style>
32
+ body {
33
+ background-color: #f1f2f3;
34
+ }
35
+
36
+ .container {
37
+ max-width: 1024px;
38
+ }
39
+
40
+ .navbar-light .navbar-nav .nav-link,
41
+ .navbar-light .navbar-nav .nav-link:hover {
42
+ font-family: Karla;
43
+ font-size: 14px;
44
+ color: #000000;
45
+ }
46
+
47
+ .navbar-brand img {
48
+ width: 120px
49
+ }
50
+
51
+ .dash-sub-title h1 {
52
+ font-size: 16px;
53
+ margin: 24px 0 8px 0;
54
+ }
55
+
56
+ .dash-sub-title h2 {
57
+ font-size: 14px;
58
+ margin: 8px 0 8px 0;
59
+ }
60
+
61
+ .card {
62
+ height: 480px;
63
+ }
64
+
65
+ .card-scroller {
66
+ overflow: scroll;
67
+ height: 420px;
68
+ }
69
+ h5 {
70
+ border-bottom: solid 1px #d2d2d2;
71
+ }
72
+
73
+ ::-webkit-scrollbar {
74
+ -webkit-appearance: none;
75
+ width: 7px;
76
+ }
77
+
78
+ ::-webkit-scrollbar-thumb {
79
+ border-radius: 4px;
80
+ background-color: rgba(0, 0, 0, .5);
81
+ -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
82
+ }
83
+
84
+ .alwaysai-logos-svg-horizontal-logo-red-black {
85
+ width: 121px;
86
+ height: 33px;
87
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI5MXB0IiBoZWlnaHQ9IjI1cHQiIHZpZXdCb3g9IjAgMCA5MSAyNSIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIHN0eWxlPSIgc3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDpyZ2IoOTQuOTAxOTYxJSwxOC44MjM1MjklLDIyLjc0NTA5OCUpO2ZpbGwtb3BhY2l0eToxOyIgZD0iTSAyMC44MDQ2ODggMTIuNDYwOTM4IEwgMTQuMjMwNDY5IDAuOTY0ODQ0IEwgMS4xMTcxODggMjMuODgyODEyIEwgNi4zMDQ2ODggMjMuODgyODEyIEMgOS40NDE0MDYgMTguMjgxMjUgMTQuNjYwMTU2IDE0LjE3MTg3NSAyMC44MDQ2ODggMTIuNDYwOTM4IE0gOC4xNTYyNSAyMS44MjQyMTkgQyA5LjkzNzUgMjAuNTgyMDMxIDEyLjA2MjUgMTkuOTM3NSAxNC4yMzA0NjkgMTkuOTgwNDY5IEMgMTcuNDQ1MzEyIDE5Ljk4MDQ2OSAyMC42NjQwNjIgMjEuMjgxMjUgMjIuMTUyMzQ0IDIzLjg4MjgxMiBMIDI3LjMzOTg0NCAyMy44ODI4MTIgTCAyNS43ODEyNSAyMS4xNTYyNSBDIDIyLjQyNTc4MSAxNS4yOTI5NjkgMTQuMzAwNzgxIDE0LjcxNDg0NCA4LjE1NjI1IDIxLjgyNDIxOSBaIE0gOC4xNTYyNSAyMS44MjQyMTkgIi8+PHBhdGggc3R5bGU9IiBzdHJva2U6bm9uZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOnJnYigxMC45ODAzOTIlLDExLjc2NDcwNiUsMTIuOTQxMTc2JSk7ZmlsbC1vcGFjaXR5OjE7IiBkPSJNIDc1LjcxMDkzOCAxMC40MDYyNSBMIDc1LjA1ODU5NCAxMS4wODk4NDQgQyA3NC42NTIzNDQgMTAuNjIxMDk0IDc0LjA4MjAzMSAxMC4zMzU5MzggNzMuNDcyNjU2IDEwLjI4OTA2MiBDIDczLjE1NjI1IDEwLjI4NTE1NiA3Mi44NTU0NjkgMTAuNDAyMzQ0IDcyLjYyODkwNiAxMC42MTcxODggQyA3Mi40MDYyNSAxMC44MTI1IDcyLjI3NzM0NCAxMS4wOTM3NSA3Mi4yNzczNDQgMTEuMzg2NzE5IEMgNzIuMjgxMjUgMTEuNjYwMTU2IDcyLjM4NjcxOSAxMS45MjE4NzUgNzIuNTY2NDA2IDEyLjEyNSBDIDcyLjkxNzk2OSAxMi40ODA0NjkgNzMuMzI4MTI1IDEyLjc2NTYyNSA3My43ODEyNSAxMi45Njg3NSBDIDc0LjM3MTA5NCAxMy4yMzQzNzUgNzQuODk0NTMxIDEzLjYyMTA5NCA3NS4zMjAzMTIgMTQuMTA5Mzc1IEMgNzUuNTgyMDMxIDE0LjQ2ODc1IDc1LjcyMjY1NiAxNC45MTAxNTYgNzUuNzE4NzUgMTUuMzU5Mzc1IEMgNzUuNzMwNDY5IDE1Ljk4NDM3NSA3NS40ODQzNzUgMTYuNTg1OTM4IDc1LjAzNTE1NiAxNy4wMTk1MzEgQyA3NC41ODU5MzggMTcuNDY4NzUgNzMuOTY4NzUgMTcuNzE0ODQ0IDczLjMzNTkzOCAxNy42OTkyMTkgQyA3Mi44ODI4MTIgMTcuNjk5MjE5IDcyLjQzNzUgMTcuNTk3NjU2IDcyLjAzNTE1NiAxNy4zOTg0MzggQyA3MS42MzI4MTIgMTcuMjA3MDMxIDcxLjI4MTI1IDE2LjkyNTc4MSA3MS4wMDc4MTIgMTYuNTcwMzEyIEwgNzEuNjQ0NTMxIDE1LjgzOTg0NCBDIDcyLjAzOTA2MiAxNi4zNjMyODEgNzIuNjQwNjI1IDE2LjY4NzUgNzMuMjg5MDYyIDE2LjcyMjY1NiBDIDczLjY3MTg3NSAxNi43MzQzNzUgNzQuMDQ2ODc1IDE2LjU5Mzc1IDc0LjMyODEyNSAxNi4zMzIwMzEgQyA3NC41OTc2NTYgMTYuMDk3NjU2IDc0Ljc1MzkwNiAxNS43NTc4MTIgNzQuNzUzOTA2IDE1LjQwMjM0NCBDIDc0Ljc1NzgxMiAxNS4xMTcxODggNzQuNjU2MjUgMTQuODM1OTM4IDc0LjQ3MjY1NiAxNC42MjEwOTQgQyA3NC4wOTc2NTYgMTQuMjY1NjI1IDczLjY2Nzk2OSAxMy45ODA0NjkgNzMuMTk1MzEyIDEzLjc3MzQzOCBDIDcyLjYzNjcxOSAxMy41MTk1MzEgNzIuMTQ0NTMxIDEzLjE0NDUzMSA3MS43NDYwOTQgMTIuNjcxODc1IEMgNzEuNDkyMTg4IDEyLjMxMjUgNzEuMzU1NDY5IDExLjg3ODkwNiA3MS4zNjMyODEgMTEuNDM3NSBDIDcxLjM0NzY1NiAxMC44NzEwOTQgNzEuNTcwMzEyIDEwLjMyNDIxOSA3MS45NzI2NTYgOS45MzM1OTQgQyA3Mi4zOTA2MjUgOS41MzEyNSA3Mi45NDkyMTkgOS4zMTI1IDczLjUyMzQzOCA5LjMzMjAzMSBDIDc0LjM2MzI4MSA5LjM4NjcxOSA3NS4xNTIzNDQgOS43NzM0MzggNzUuNzEwOTM4IDEwLjQwNjI1IE0gNjIuOTQxNDA2IDkuNTM1MTU2IEwgNjQuMDE1NjI1IDkuNTM1MTU2IEwgNjYuNzI2NTYyIDE1LjY2Nzk2OSBMIDY5LjM1NTQ2OSA5LjUzNTE1NiBMIDcwLjQzMzU5NCA5LjUzNTE1NiBMIDY1LjczMDQ2OSAyMC40MDIzNDQgTCA2NC42NjAxNTYgMjAuNDAyMzQ0IEwgNjYuMTc5Njg4IDE2Ljg5NDUzMSBaIE0gNTcuNDQ1MzEyIDEwLjMyMDMxMiBDIDU2LjMyMDMxMiAxMC4zMDg1OTQgNTUuMjgxMjUgMTAuOTI1NzgxIDU0Ljc0MjE4OCAxMS45MjE4NzUgQyA1NC4xNzU3ODEgMTIuOTE3OTY5IDU0LjE3NTc4MSAxNC4xNDQ1MzEgNTQuNzQyMTg4IDE1LjE0MDYyNSBDIDU1LjAxNTYyNSAxNS42MzI4MTIgNTUuNDEwMTU2IDE2LjA0Njg3NSA1NS44OTQ1MzEgMTYuMzM1OTM4IEMgNTYuMzU5Mzc1IDE2LjYxNzE4OCA1Ni44OTQ1MzEgMTYuNzYxNzE5IDU3LjQ0MTQwNiAxNi43NjE3MTkgQyA1Ny45OTIxODggMTYuNzYxNzE5IDU4LjUzOTA2MiAxNi42MTcxODggNTkuMDE5NTMxIDE2LjMzNTkzOCBDIDU5LjUwMzkwNiAxNi4wNzAzMTIgNTkuODk4NDM4IDE1LjY3MTg3NSA2MC4xNjc5NjkgMTUuMTg3NSBDIDYwLjQ0MTQwNiAxNC42OTE0MDYgNjAuNTc4MTI1IDE0LjEyODkwNiA2MC41NzAzMTIgMTMuNTU4NTk0IEMgNjAuNTkzNzUgMTIuNjk1MzEyIDYwLjI2OTUzMSAxMS44NjMyODEgNTkuNjY3OTY5IDExLjI1IEMgNTkuMDg5ODQ0IDEwLjYzNjcxOSA1OC4yODUxNTYgMTAuMzAwNzgxIDU3LjQ0NTMxMiAxMC4zMjAzMTIgWiBNIDYxLjUwNzgxMiA5LjUzNTE1NiBMIDYxLjUwNzgxMiAxNy40OTIxODggTCA2MC41MDc4MTIgMTcuNDkyMTg4IEwgNjAuNTA3ODEyIDE2LjEyNSBDIDYwLjExNzE4OCAxNi42MTcxODggNTkuNjI4OTA2IDE3LjAxOTUzMSA1OS4wNzQyMTkgMTcuMzA0Njg4IEMgNTcuNTIzNDM4IDE4LjA1MDc4MSA1NS42NzU3ODEgMTcuNzE0ODQ0IDU0LjQ4MDQ2OSAxNi40NzI2NTYgQyA1My42OTkyMTkgMTUuNjgzNTk0IDUzLjI3MzQzOCAxNC42MDU0NjkgNTMuMjkyOTY5IDEzLjQ5MjE4OCBDIDUzLjI3NzM0NCAxMi4zODY3MTkgNTMuNzEwOTM4IDExLjMyODEyNSA1NC40OTIxODggMTAuNTU0Njg4IEMgNTUuMjM4MjgxIDkuNzYxNzE5IDU2LjI4MTI1IDkuMzE2NDA2IDU3LjM2NzE4OCA5LjMzMjAzMSBDIDU3Ljk3NjU2MiA5LjMyMDMxMiA1OC41ODIwMzEgOS40NjQ4NDQgNTkuMTI1IDkuNzQ2MDk0IEMgNTkuNjc1NzgxIDEwLjA1MDc4MSA2MC4xNDg0MzggMTAuNDgwNDY5IDYwLjUwNzgxMiAxMSBMIDYwLjUwNzgxMiA5LjUzNTE1NiBaIE0gNDAuMjUgOS41MzUxNTYgTCA0MS4yOTI5NjkgOS41MzUxNTYgTCA0My43MDcwMzEgMTUuMzEyNSBMIDQ2LjIzODI4MSA5LjUzNTE1NiBMIDQ2LjQxNzk2OSA5LjUzNTE1NiBMIDQ4Ljk0MTQwNiAxNS4zMTI1IEwgNTEuMzk0NTMxIDkuNTM1MTU2IEwgNTIuNDUzMTI1IDkuNTM1MTU2IEwgNDkuMDM1MTU2IDE3LjQ5MjE4OCBMIDQ4LjgzOTg0NCAxNy40OTIxODggTCA0Ni4zMzIwMzEgMTEuNzk2ODc1IEwgNDMuODAwNzgxIDE3LjQ5MjE4OCBMIDQzLjYxMzI4MSAxNy40OTIxODggWiBNIDM4LjE5NTMxMiA2LjQ2NDg0NCBMIDM5LjIxMDkzOCA2LjQ2NDg0NCBMIDM5LjIxMDkzOCAxNy40OTIxODggTCAzOC4xOTUzMTIgMTcuNDkyMTg4IFogTSAzMi4wMDM5MDYgMTAuMzIwMzEyIEMgMzAuODc4OTA2IDEwLjMwODU5NCAyOS44MzU5MzggMTAuOTI1NzgxIDI5LjI5Njg3NSAxMS45MjE4NzUgQyAyOC43MzA0NjkgMTIuOTE3OTY5IDI4LjczNDM3NSAxNC4xNDQ1MzEgMjkuMzAwNzgxIDE1LjE0MDYyNSBDIDI5LjU3MDMxMiAxNS42MzI4MTIgMjkuOTY4NzUgMTYuMDQ2ODc1IDMwLjQ0OTIxOSAxNi4zMzU5MzggQyAzMC45MTc5NjkgMTYuNjE3MTg4IDMxLjQ1MzEyNSAxNi43NjE3MTkgMzEuOTk2MDk0IDE2Ljc2MTcxOSBDIDMyLjU1MDc4MSAxNi43NjE3MTkgMzMuMDkzNzUgMTYuNjE3MTg4IDMzLjU3ODEyNSAxNi4zMzU5MzggQyAzNC4wNTg1OTQgMTYuMDcwMzEyIDM0LjQ1NzAzMSAxNS42NzE4NzUgMzQuNzIyNjU2IDE1LjE4NzUgQyAzNC45OTYwOTQgMTQuNjkxNDA2IDM1LjEzNjcxOSAxNC4xMjg5MDYgMzUuMTI4OTA2IDEzLjU1ODU5NCBDIDM1LjE0ODQzOCAxMi42OTUzMTIgMzQuODI0MjE5IDExLjg2MzI4MSAzNC4yMjY1NjIgMTEuMjQ2MDk0IEMgMzMuNjQ0NTMxIDEwLjYzNjcxOSAzMi44Mzk4NDQgMTAuMzAwNzgxIDMyLjAwMzkwNiAxMC4zMjAzMTIgWiBNIDM2LjA2MjUgOS41MzUxNTYgTCAzNi4wNjI1IDE3LjQ5MjE4OCBMIDM1LjA2MjUgMTcuNDkyMTg4IEwgMzUuMDYyNSAxNi4xMjUgQyAzNC42NzU3ODEgMTYuNjE3MTg4IDM0LjE4NzUgMTcuMDE5NTMxIDMzLjYzMjgxMiAxNy4zMDQ2ODggQyAzMi4wODIwMzEgMTguMDUwNzgxIDMwLjIzMDQ2OSAxNy43MTQ4NDQgMjkuMDM1MTU2IDE2LjQ3MjY1NiBDIDI4LjI1NzgxMiAxNS42ODM1OTQgMjcuODI4MTI1IDE0LjYwNTQ2OSAyNy44NTE1NjIgMTMuNDkyMTg4IEMgMjcuODM1OTM4IDEyLjM4NjcxOSAyOC4yNjU2MjUgMTEuMzI4MTI1IDI5LjA0Njg3NSAxMC41NTQ2ODggQyAyOS43OTY4NzUgOS43NjE3MTkgMzAuODM5ODQ0IDkuMzE2NDA2IDMxLjkyNTc4MSA5LjMzMjAzMSBDIDMyLjUzNTE1NiA5LjMyMDMxMiAzMy4xMzY3MTkgOS40NjQ4NDQgMzMuNjc5Njg4IDkuNzQ2MDk0IEMgMzQuMjMwNDY5IDEwLjA1MDc4MSAzNC43MDMxMjUgMTAuNDgwNDY5IDM1LjA2MjUgMTEgTCAzNS4wNjI1IDkuNTM1MTU2IFogTSAzNi4wNjI1IDkuNTM1MTU2ICIvPjxwYXRoIHN0eWxlPSIgc3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDpyZ2IoOTQuOTAxOTYxJSwxOC44MjM1MjklLDIyLjc0NTA5OCUpO2ZpbGwtb3BhY2l0eToxOyIgZD0iTSA4My4zMzIwMzEgMTIuNTI3MzQ0IEwgODEuOTU3MDMxIDkuNTcwMzEyIEwgODAuNTY2NDA2IDEyLjUyNzM0NCBaIE0gODQuMDI3MzQ0IDE0LjA0Mjk2OSBMIDc5Ljg2MzI4MSAxNC4wNDI5NjkgTCA3OC4yMzgyODEgMTcuNDkyMTg4IEwgNzYuNTMxMjUgMTcuNDkyMTg4IEwgODEuNjc1NzgxIDYuNTAzOTA2IEwgODIuMjQ2MDk0IDYuNTAzOTA2IEwgODcuMzI0MjE5IDE3LjQ5MjE4OCBMIDg1LjY2MDE1NiAxNy40OTIxODggWiBNIDg0LjAyNzM0NCAxNC4wNDI5NjkgIi8+PHBhdGggc3R5bGU9IiBzdHJva2U6bm9uZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOnJnYig5NC45MDE5NjElLDE4LjgyMzUyOSUsMjIuNzQ1MDk4JSk7ZmlsbC1vcGFjaXR5OjE7IiBkPSJNIDg4LjE0NDUzMSA2LjUwMzkwNiBMIDg5LjY4MzU5NCA2LjUwMzkwNiBMIDg5LjY4MzU5NCAxNy40OTIxODggTCA4OC4xNDQ1MzEgMTcuNDkyMTg4IFogTSA4OC4xNDQ1MzEgNi41MDM5MDYgIi8+PC9nPjwvc3ZnPg==);
88
+ }
89
+ </style>
90
+ </head>
91
+
92
+ <body class="tos-bg">
93
+
94
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
95
+ <a class="navbar-brand" href="http://alwaysai.co/" target="_blank"><div class="alwaysai-logos-svg-horizontal-logo-red-black"></div>
96
+ </a>
97
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText"
98
+ aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
99
+ <span class="navbar-toggler-icon"></span>
100
+ </button>
101
+ <div class="collapse navbar-collapse" id="navbarText">
102
+ <span class="navbar-nav mr-auto"></span>
103
+
104
+ <ul class="navbar-nav ">
105
+
106
+ <li class="nav-item">
107
+ <a class="nav-link" href="https://alwaysai.co/docs/" target="_blank">Documentation</a>
108
+ </li>
109
+ <li class="nav-item">
110
+ <a class="nav-link" href="https://alwaysai.co/support" target="_blank">Support</a>
111
+ </li>
112
+ </ul>
113
+ </div>
114
+ </nav>
115
+ <div class="container" min-width= "1024px" width="100%">
116
+ <div class="card-deck">
117
+
118
+ <div class="card">
119
+ <div class="card-body">
120
+ <h5 class="card-title">Device Status</h5>
121
+ <div class="row" style="justify-content: center; align-items: center;">
122
+ <div class="card col-sm" style="background-color: #add8e6; height: fit-content; align-items: center;">
123
+ <h6 class="card-title">CPU %</h6>
124
+ <p id="cpu_value" style="font-size: 40px;">0%</p>
125
+ </div>
126
+ <div class="card col-sm" style="background-color: #add8e6; height: fit-content; align-items: center;">
127
+ <h6 class="card-title">Memory %</h6>
128
+ <p id="memory_value" style="font-size: 40px;">0%</p></div>
129
+ <div class="card col-sm" style="background-color: #add8e6; height: fit-content; align-items: center;">
130
+ <h6 class="card-title">Disk %</h6>
131
+ <p id="disk_value" style="font-size: 40px;">0%</p></div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+
136
+ <div class="card">
137
+ <div class="card-body">
138
+ <h5 class="card-title">Applications</h5>
139
+ <div class="row">
140
+ <div id="projects"></div>
141
+ </div>
142
+ </div>
143
+ </div>
144
+
145
+ </div>
146
+ </div>
147
+ </html>
148
+
149
+ <script>
150
+ const socket = io();
151
+ function start(projectId) {
152
+ socket.emit('start-app', {projectId});
153
+ }
154
+
155
+ function stop(projectId) {
156
+ socket.emit('stop-app', {projectId});
157
+ }
158
+
159
+ function restart(projectId) {
160
+ socket.emit('restart-app', {projectId});
161
+ }
162
+
163
+ document.addEventListener("DOMContentLoaded", function(event) {
164
+
165
+ const device_info_elem = document.getElementById("device-info");
166
+ const apps_info_elem = document.getElementById("apps-info");
167
+ const cpu_value = document.getElementById("cpu_value");
168
+ const memory_value = document.getElementById("memory_value");
169
+ const disk_value = document.getElementById("disk_value");
170
+ const projects = document.getElementById("projects");
171
+
172
+ //const socket = io.connect('http://' + document.domain + ':' + location.port, {
173
+ // reconnection: true,
174
+ // transports: ["websocket"],
175
+ //});
176
+
177
+ socket.on('connect', () => {
178
+ console.log('Connected');
179
+ running = true;
180
+ });
181
+
182
+ socket.on('disconnect', () => {
183
+ console.log('Disconnected');
184
+ });
185
+
186
+ socket.on('connect_error', (error) => {
187
+ console.log('Connect error! ' + error);
188
+ });
189
+
190
+ socket.on('connect_timeout', (error) => {
191
+ console.log('Connect timeout! ' + error);
192
+ });
193
+
194
+ socket.on('error', (error) => {
195
+ console.log('Error! ' + error);
196
+ });
197
+
198
+ socket.on('device-info-rsp', (msg) => {
199
+ console.log('Received device-info-rsp');
200
+ console.log(msg);
201
+ cpu_value.innerHTML = msg.cpuUtil.toFixed(1) + "%"
202
+ memory_value.innerHTML = msg.memUtil.toFixed(1) + "%"
203
+ disk_value.innerHTML = msg.diskUtil.toFixed(1) + "%"
204
+ });
205
+
206
+ socket.on('apps-info-rsp', (msg) => {
207
+ console.log('Received apps-info-rsp');
208
+ console.log(msg);
209
+ projects.innerHTML = msg.apps.map(app => {
210
+ return (
211
+ `<div class="col-sm" style="background-color: #add8e6;">
212
+ <h6>Project Info:</h6>
213
+ <p id="app_id">ID: ${app.projectId}</p>
214
+ <p id="app_status">Status: ${app.status}</p>
215
+ <button onclick=start("${app.projectId}") type="button" class="btn btn-outline-success">Start</button>
216
+ <button onclick=stop("${app.projectId}") type="button" class="btn btn-outline-danger">Stop</button>
217
+ <button onclick=restart("${app.projectId}") type="button" class="btn btn-outline-info">Restart</button>
218
+ </div>`
219
+ )
220
+ })
221
+ });
222
+
223
+ // Update device and app state periodically (5 seconds)
224
+ setInterval(() => {
225
+ socket.emit('device-info-req');
226
+ socket.emit('apps-info-req');
227
+ }, 1000)
228
+ });
229
+ </script>
@@ -0,0 +1,18 @@
1
+ /* latin-ext */
2
+ @font-face {
3
+ font-family: 'Karla';
4
+ font-style: normal;
5
+ font-weight: 400;
6
+ font-display: swap;
7
+ src: local('Karla'), local('Karla-Regular'), url(https://fonts.gstatic.com/s/karla/v8/qkBbXvYC6trAT7RbLtyG5Q.woff2) format('woff2');
8
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
9
+ }
10
+ /* latin */
11
+ @font-face {
12
+ font-family: 'Karla';
13
+ font-style: normal;
14
+ font-weight: 400;
15
+ font-display: swap;
16
+ src: local('Karla'), local('Karla-Regular'), url(https://fonts.gstatic.com/s/karla/v8/qkBbXvYC6trAT7RVLtw.woff2) format('woff2');
17
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
18
+ }