@auto-engineer/cli 0.9.11 → 0.9.13

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 (40) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/dsl/index.d.ts +34 -3
  3. package/dist/src/dsl/index.d.ts.map +1 -1
  4. package/dist/src/dsl/index.js +304 -14
  5. package/dist/src/dsl/index.js.map +1 -1
  6. package/dist/src/dsl-exports.d.ts +3 -1
  7. package/dist/src/dsl-exports.d.ts.map +1 -1
  8. package/dist/src/dsl-exports.js +2 -1
  9. package/dist/src/dsl-exports.js.map +1 -1
  10. package/dist/src/server/command-metadata-service.d.ts +17 -0
  11. package/dist/src/server/command-metadata-service.d.ts.map +1 -0
  12. package/dist/src/server/command-metadata-service.js +35 -0
  13. package/dist/src/server/command-metadata-service.js.map +1 -0
  14. package/dist/src/server/command-registry.d.ts +5 -16
  15. package/dist/src/server/command-registry.d.ts.map +1 -1
  16. package/dist/src/server/command-registry.js +8 -18
  17. package/dist/src/server/command-registry.js.map +1 -1
  18. package/dist/src/server/config-loader.d.ts +2 -1
  19. package/dist/src/server/config-loader.d.ts.map +1 -1
  20. package/dist/src/server/config-loader.js +9 -1
  21. package/dist/src/server/config-loader.js.map +1 -1
  22. package/dist/src/server/event-processor.d.ts +5 -3
  23. package/dist/src/server/event-processor.d.ts.map +1 -1
  24. package/dist/src/server/event-processor.js +10 -1
  25. package/dist/src/server/event-processor.js.map +1 -1
  26. package/dist/src/server/http-routes.d.ts +3 -0
  27. package/dist/src/server/http-routes.d.ts.map +1 -1
  28. package/dist/src/server/http-routes.js +29 -8
  29. package/dist/src/server/http-routes.js.map +1 -1
  30. package/dist/src/server/sandbox-landing-page.html +336 -315
  31. package/dist/src/server/server.d.ts +11 -1
  32. package/dist/src/server/server.d.ts.map +1 -1
  33. package/dist/src/server/server.js +19 -1
  34. package/dist/src/server/server.js.map +1 -1
  35. package/dist/src/server/settled-tracker.d.ts +19 -0
  36. package/dist/src/server/settled-tracker.d.ts.map +1 -0
  37. package/dist/src/server/settled-tracker.js +162 -0
  38. package/dist/src/server/settled-tracker.js.map +1 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +4 -4
@@ -1,342 +1,363 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>On Auto — Sandbox Server</title>
7
+ <meta name="onauto:hosted-url" content="" />
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" />
9
+ <link
10
+ rel="icon"
11
+ type="image/svg+xml"
12
+ href="data:image/svg+xml,%3Csvg width='637' height='637' viewBox='0 0 637 637' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_1042_512)'%3E%3Crect width='637' height='637'/%3E%3Cpath d='M693.161 -427.743L-623.632 1532.31L-591.107 1552.06L725.686 -407.988L693.161 -427.743Z' fill='%23EC3F4A'/%3E%3Cpath d='M725.695 -407.962L-591.097 1552.09L-571.511 1563.98L745.281 -396.066L725.695 -407.962Z' fill='%231A1A1A'/%3E%3Cpath d='M745.281 -396.071L-571.511 1563.98L-538.986 1583.73L777.807 -376.315L745.281 -396.071Z' fill='%23FF8A1D'/%3E%3Cpath d='M777.815 -376.302L-538.978 1583.75L-519.391 1595.64L797.402 -364.406L777.815 -376.302Z' fill='%231A1A1A'/%3E%3Cpath d='M797.394 -364.425L-519.399 1595.62L-486.874 1615.38L829.919 -344.67L797.394 -364.425Z' fill='%235EC72D'/%3E%3Cpath d='M829.913 -344.684L-486.879 1615.37L-467.293 1627.26L849.499 -332.787L829.913 -344.684Z' fill='%231A1A1A'/%3E%3Cpath d='M849.467 -332.791L-467.326 1627.26L-434.801 1647.01L881.992 -313.035L849.467 -332.791Z' fill='%2342C3F7'/%3E%3Cpath d='M882 -313.038L-434.792 1647.01L-415.206 1658.91L901.587 -301.142L882 -313.038Z' fill='%231A1A1A'/%3E%3Cpath d='M673.55 -439.635L-643.242 1520.42L-623.656 1532.31L693.136 -427.738L673.55 -439.635Z' fill='%231A1A1A'/%3E%3Cpath d='M512.644 100H121.718C109.652 100 100 109.667 100 121.751V513.277C100 525.361 109.652 535.028 121.718 535.028H512.644C524.71 535.028 534.362 525.361 534.362 513.277V121.751C534.362 109.667 524.71 100 512.644 100Z' fill='white'/%3E%3Cpath d='M413.706 481.86C451.11 481.86 481.274 451.649 481.274 414.189C481.274 376.728 451.11 346.518 413.706 346.518C376.303 346.518 346.139 376.728 346.139 414.189C346.139 451.649 376.303 481.86 413.706 481.86Z' fill='%231A1A1A'/%3E%3Cpath d='M153.089 347.968C153.089 347.243 153.813 346.518 154.537 346.518H287.017C287.741 346.518 288.465 347.243 288.465 347.968V412.98C288.465 413.705 287.741 414.43 287.017 414.43H257.095C256.371 414.43 255.647 415.155 255.647 415.88V480.893C255.647 481.618 254.923 482.343 254.199 482.343H188.321C187.597 482.343 186.873 481.618 186.873 480.893V415.88C186.873 415.155 186.149 414.43 185.425 414.43H154.296C153.572 414.43 152.848 413.705 152.848 412.98V347.968H153.089Z' fill='%231A1A1A'/%3E%3Cpath d='M347.587 153.17C346.863 153.17 346.139 153.895 346.139 154.621V223.017C346.139 259.269 376.303 288.513 413.706 288.513C451.11 288.513 481.274 259.269 481.274 223.017V154.621C481.274 153.895 480.55 153.17 479.826 153.17H347.345H347.587Z' fill='%231A1A1A'/%3E%3Cpath d='M153.33 286.339C152.848 287.306 153.33 288.272 154.537 288.272H286.776C287.742 288.272 288.465 287.306 287.983 286.339L221.863 154.139C221.381 153.172 219.933 153.172 219.45 154.139L153.33 286.339Z' fill='%231A1A1A'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_1042_512'%3E%3Crect width='637' height='637' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E"
13
+ />
14
+ <style>
15
+ * {
16
+ box-sizing: border-box;
17
+ }
18
+
19
+ html,
20
+ body {
21
+ margin: 0;
22
+ padding: 0;
23
+ width: 100vw;
24
+ height: 100vh;
25
+ background-color: black;
26
+ }
27
+
28
+ :root {
29
+ --brand-red: #ec3f4a;
30
+ --brand-orange: #ff8a1d;
31
+ --brand-green: #5ec72d;
32
+ --brand-blue: #42c3f7;
33
+ --brand-primary: #0057dd;
34
+ }
35
+
36
+ .landing-root {
37
+ width: 100%;
38
+ height: 100%;
39
+ color: #e6e9ef;
40
+ font-family:
41
+ ui-sans-serif,
42
+ system-ui,
43
+ -apple-system,
44
+ Segoe UI,
45
+ Roboto,
46
+ Ubuntu,
47
+ Cantarell,
48
+ Noto Sans,
49
+ Helvetica Neue,
50
+ Arial,
51
+ 'Apple Color Emoji',
52
+ 'Segoe UI Emoji';
53
+ position: relative;
54
+ overflow: hidden;
55
+ background-image: url('https://framerusercontent.com/images/KkJqJ4krjg5tkwq9wtHeMXjKaMU.png?width=1440&height=780');
56
+ background-size: cover;
57
+ background-position: center;
58
+ }
59
+
60
+ .landing-container {
61
+ width: 100%;
62
+ height: 100%;
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: center;
66
+ justify-content: center;
67
+ gap: 24px;
68
+ padding: 24px;
69
+ }
3
70
 
4
- <head>
5
- <meta charset="UTF-8" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>On Auto — Sandbox Server</title>
8
- <meta name="onauto:hosted-url" content="" />
9
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
10
- <link rel="icon" type="image/svg+xml"
11
- href="data:image/svg+xml,%3Csvg width='637' height='637' viewBox='0 0 637 637' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_1042_512)'%3E%3Crect width='637' height='637'/%3E%3Cpath d='M693.161 -427.743L-623.632 1532.31L-591.107 1552.06L725.686 -407.988L693.161 -427.743Z' fill='%23EC3F4A'/%3E%3Cpath d='M725.695 -407.962L-591.097 1552.09L-571.511 1563.98L745.281 -396.066L725.695 -407.962Z' fill='%231A1A1A'/%3E%3Cpath d='M745.281 -396.071L-571.511 1563.98L-538.986 1583.73L777.807 -376.315L745.281 -396.071Z' fill='%23FF8A1D'/%3E%3Cpath d='M777.815 -376.302L-538.978 1583.75L-519.391 1595.64L797.402 -364.406L777.815 -376.302Z' fill='%231A1A1A'/%3E%3Cpath d='M797.394 -364.425L-519.399 1595.62L-486.874 1615.38L829.919 -344.67L797.394 -364.425Z' fill='%235EC72D'/%3E%3Cpath d='M829.913 -344.684L-486.879 1615.37L-467.293 1627.26L849.499 -332.787L829.913 -344.684Z' fill='%231A1A1A'/%3E%3Cpath d='M849.467 -332.791L-467.326 1627.26L-434.801 1647.01L881.992 -313.035L849.467 -332.791Z' fill='%2342C3F7'/%3E%3Cpath d='M882 -313.038L-434.792 1647.01L-415.206 1658.91L901.587 -301.142L882 -313.038Z' fill='%231A1A1A'/%3E%3Cpath d='M673.55 -439.635L-643.242 1520.42L-623.656 1532.31L693.136 -427.738L673.55 -439.635Z' fill='%231A1A1A'/%3E%3Cpath d='M512.644 100H121.718C109.652 100 100 109.667 100 121.751V513.277C100 525.361 109.652 535.028 121.718 535.028H512.644C524.71 535.028 534.362 525.361 534.362 513.277V121.751C534.362 109.667 524.71 100 512.644 100Z' fill='white'/%3E%3Cpath d='M413.706 481.86C451.11 481.86 481.274 451.649 481.274 414.189C481.274 376.728 451.11 346.518 413.706 346.518C376.303 346.518 346.139 376.728 346.139 414.189C346.139 451.649 376.303 481.86 413.706 481.86Z' fill='%231A1A1A'/%3E%3Cpath d='M153.089 347.968C153.089 347.243 153.813 346.518 154.537 346.518H287.017C287.741 346.518 288.465 347.243 288.465 347.968V412.98C288.465 413.705 287.741 414.43 287.017 414.43H257.095C256.371 414.43 255.647 415.155 255.647 415.88V480.893C255.647 481.618 254.923 482.343 254.199 482.343H188.321C187.597 482.343 186.873 481.618 186.873 480.893V415.88C186.873 415.155 186.149 414.43 185.425 414.43H154.296C153.572 414.43 152.848 413.705 152.848 412.98V347.968H153.089Z' fill='%231A1A1A'/%3E%3Cpath d='M347.587 153.17C346.863 153.17 346.139 153.895 346.139 154.621V223.017C346.139 259.269 376.303 288.513 413.706 288.513C451.11 288.513 481.274 259.269 481.274 223.017V154.621C481.274 153.895 480.55 153.17 479.826 153.17H347.345H347.587Z' fill='%231A1A1A'/%3E%3Cpath d='M153.33 286.339C152.848 287.306 153.33 288.272 154.537 288.272H286.776C287.742 288.272 288.465 287.306 287.983 286.339L221.863 154.139C221.381 153.172 219.933 153.172 219.45 154.139L153.33 286.339Z' fill='%231A1A1A'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_1042_512'%3E%3Crect width='637' height='637' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E" />
12
- <style>
13
- * {
14
- box-sizing: border-box;
15
- }
16
-
17
- html,
18
- body {
19
- margin: 0;
20
- padding: 0;
21
- width: 100vw;
22
- height: 100vh;
23
- }
24
-
25
- :root {
26
- --brand-red: #ec3f4a;
27
- --brand-orange: #ff8a1d;
28
- --brand-green: #5ec72d;
29
- --brand-blue: #42c3f7;
30
- --brand-primary: #0057dd;
31
- }
32
-
33
- .landing-root {
34
- width: 100%;
35
- height: 100%;
36
- color: #e6e9ef;
37
- font-family:
38
- ui-sans-serif,
39
- system-ui,
40
- -apple-system,
41
- Segoe UI,
42
- Roboto,
43
- Ubuntu,
44
- Cantarell,
45
- Noto Sans,
46
- Helvetica Neue,
47
- Arial,
48
- 'Apple Color Emoji',
49
- 'Segoe UI Emoji';
50
- position: relative;
51
- overflow: hidden;
52
- background-image:
53
- linear-gradient(180deg, rgba(5, 7, 13, 0.65), rgba(3, 4, 10, 0.85)),
54
- url('https://framerusercontent.com/images/KkJqJ4krjg5tkwq9wtHeMXjKaMU.png?width=1440&height=780');
55
- background-size: cover;
56
- background-position: center;
57
- }
58
-
59
- .landing-container {
60
- width: 100%;
61
- height: 100%;
62
- display: flex;
63
- flex-direction: column;
64
- align-items: center;
65
- justify-content: center;
66
- gap: 24px;
67
- padding: 24px;
68
- }
69
-
70
- .content-grid {
71
- width: 100%;
72
- max-width: 1120px;
73
- display: grid;
74
- grid-template-columns: 1fr;
75
- align-items: center;
76
- gap: 36px;
77
- }
78
-
79
- .left {
80
- display: flex;
81
- justify-content: center;
82
- }
83
-
84
- .right {
85
- display: flex;
86
- align-items: center;
87
- justify-content: center;
88
- }
89
-
90
- .hero {
91
- text-align: center;
92
- display: flex;
93
- flex-direction: column;
94
- align-items: center;
95
- gap: 14px;
96
- }
97
-
98
- .badge {
99
- display: inline-flex;
100
- align-items: center;
101
- gap: 6px;
102
- padding: 6px 10px;
103
- border-radius: 999px;
104
- background: rgba(0, 87, 221, 0.18);
105
- color: #c9d8ff;
106
- font-weight: 600;
107
- font-size: 12px;
108
- letter-spacing: 0.2px;
109
- border: 1px solid rgba(0, 87, 221, 0.35);
110
- }
111
-
112
- .headline {
113
- margin: 0;
114
- font-size: 36px;
115
- line-height: 1.15;
116
- letter-spacing: -0.02em;
117
- }
118
-
119
- .logo {
120
- width: 72px;
121
- height: 72px;
122
- display: inline-block;
123
- }
124
-
125
- .subhead {
126
- margin: 0;
127
- color: #b9c3d6;
128
- }
129
-
130
- .actions {
131
- display: flex;
132
- align-items: center;
133
- gap: 12px;
134
- margin-top: 6px;
135
- justify-content: center;
136
- }
137
-
138
- button.primary {
139
- appearance: none;
140
- border: none;
141
- border-radius: 10px;
142
- padding: 14px 24px;
143
- background: linear-gradient(135deg, var(--brand-primary) 0%, #1b73ff 100%);
144
- color: white;
145
- font-weight: 600;
146
- cursor: pointer;
147
- }
148
-
149
- button.primary:disabled {
150
- opacity: 0.6;
151
- cursor: not-allowed;
152
- }
153
-
154
- .checkbox {
155
- display: inline-flex;
156
- align-items: center;
157
- gap: 8px;
158
- color: #a5adba;
159
- user-select: none;
160
- margin-top: 6px;
161
- }
162
-
163
- .footer-links {
164
- display: flex;
165
- align-items: center;
166
- gap: 10px;
167
- color: #7d8696;
168
- }
169
-
170
- .footer-links a {
171
- color: #aab4c6;
172
- text-decoration: none;
173
- }
174
-
175
- .footer-links a:hover {
176
- color: #d3dcf0;
177
- }
178
-
179
- .preview-wrap {
180
- width: 100%;
181
- max-width: 720px;
182
- border-radius: 14px;
183
- overflow: hidden;
184
- border: 1px solid rgba(255, 255, 255, 0.1);
185
- box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45);
186
- transform: translateZ(0);
187
- background: rgba(255, 255, 255, 0.03);
188
- backdrop-filter: blur(6px) saturate(120%);
189
- }
190
-
191
- .preview-image {
192
- display: block;
193
- width: 100%;
194
- height: auto;
195
- }
196
-
197
- @media (max-width: 960px) {
198
71
  .content-grid {
72
+ width: 100%;
73
+ max-width: 1120px;
74
+ display: grid;
199
75
  grid-template-columns: 1fr;
200
- gap: 24px;
76
+ align-items: center;
77
+ gap: 36px;
201
78
  }
202
79
 
203
80
  .left {
204
- order: 2;
81
+ display: flex;
82
+ justify-content: center;
205
83
  }
206
84
 
207
85
  .right {
208
- order: 1;
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
209
89
  }
210
90
 
211
91
  .hero {
212
- text-align: left;
213
- align-items: flex-start;
92
+ text-align: center;
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ gap: 14px;
97
+ }
98
+
99
+ .badge {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ gap: 6px;
103
+ padding: 6px 10px;
104
+ border-radius: 999px;
105
+ background: rgba(0, 87, 221, 0.18);
106
+ color: #c9d8ff;
107
+ font-weight: 600;
108
+ font-size: 12px;
109
+ letter-spacing: 0.2px;
110
+ border: 1px solid rgba(0, 87, 221, 0.35);
111
+ }
112
+
113
+ .headline {
114
+ margin: 0;
115
+ font-size: 36px;
116
+ line-height: 1.15;
117
+ letter-spacing: -0.02em;
118
+ }
119
+
120
+ .logo {
121
+ width: 72px;
122
+ height: 72px;
123
+ display: inline-block;
124
+ }
125
+
126
+ .subhead {
127
+ margin: 0;
128
+ color: #b9c3d6;
214
129
  }
215
130
 
216
131
  .actions {
217
- justify-content: flex-start;
132
+ display: flex;
133
+ align-items: center;
134
+ gap: 12px;
135
+ margin-top: 6px;
136
+ justify-content: center;
218
137
  }
219
- }
220
- </style>
221
- </head>
222
-
223
- <body>
224
- <div class="landing-root">
225
- <div class="landing-container">
226
- <div class="content-grid">
227
- <div class="left">
228
- <div class="hero">
229
- <div class="logo" aria-hidden="true">
230
- <svg width="100%" height="100%" viewBox="0 0 637 637" fill="none" xmlns="http://www.w3.org/2000/svg">
231
- <g clip-path="url(#clip0_1042_512)">
232
- <rect width="637" height="637" />
233
- <path d="M693.161 -427.743L-623.632 1532.31L-591.107 1552.06L725.686 -407.988L693.161 -427.743Z"
234
- fill="#EC3F4A" />
235
- <path d="M725.695 -407.962L-591.097 1552.09L-571.511 1563.98L745.281 -396.066L725.695 -407.962Z"
236
- fill="#1A1A1A" />
237
- <path d="M745.281 -396.071L-571.511 1563.98L-538.986 1583.73L777.807 -376.315L745.281 -396.071Z"
238
- fill="#FF8A1D" />
239
- <path d="M777.815 -376.302L-538.978 1583.75L-519.391 1595.64L797.402 -364.406L777.815 -376.302Z"
240
- fill="#1A1A1A" />
241
- <path d="M797.394 -364.425L-519.399 1595.62L-486.874 1615.38L829.919 -344.67L797.394 -364.425Z"
242
- fill="#5EC72D" />
243
- <path d="M829.913 -344.684L-486.879 1615.37L-467.293 1627.26L849.499 -332.787L829.913 -344.684Z"
244
- fill="#1A1A1A" />
245
- <path d="M849.467 -332.791L-467.326 1627.26L-434.801 1647.01L881.992 -313.035L849.467 -332.791Z"
246
- fill="#42C3F7" />
247
- <path d="M882 -313.038L-434.792 1647.01L-415.206 1658.91L901.587 -301.142L882 -313.038Z"
248
- fill="#1A1A1A" />
249
- <path d="M673.55 -439.635L-643.242 1520.42L-623.656 1532.31L693.136 -427.738L673.55 -439.635Z"
250
- fill="#1A1A1A" />
251
- <path
252
- d="M512.644 100H121.718C109.652 100 100 109.667 100 121.751V513.277C100 525.361 109.652 535.028 121.718 535.028H512.644C524.71 535.028 534.362 525.361 534.362 513.277V121.751C534.362 109.667 524.71 100 512.644 100Z"
253
- fill="white" />
254
- <path
255
- d="M413.706 481.86C451.11 481.86 481.274 451.649 481.274 414.189C481.274 376.728 451.11 346.518 413.706 346.518C376.303 346.518 346.139 376.728 346.139 414.189C346.139 451.649 376.303 481.86 413.706 481.86Z"
256
- fill="#1A1A1A" />
257
- <path
258
- d="M153.089 347.968C153.089 347.243 153.813 346.518 154.537 346.518H287.017C287.741 346.518 288.465 347.243 288.465 347.968V412.98C288.465 413.705 287.741 414.43 287.017 414.43H257.095C256.371 414.43 255.647 415.155 255.647 415.88V480.893C255.647 481.618 254.923 482.343 254.199 482.343H188.321C187.597 482.343 186.873 481.618 186.873 480.893V415.88C186.873 415.155 186.149 414.43 185.425 414.43H154.296C153.572 414.43 152.848 413.705 152.848 412.98V347.968H153.089Z"
259
- fill="#1A1A1A" />
260
- <path
261
- d="M347.587 153.17C346.863 153.17 346.139 153.895 346.139 154.621V223.017C346.139 259.269 376.303 288.513 413.706 288.513C451.11 288.513 481.274 259.269 481.274 223.017V154.621C481.274 153.895 480.55 153.17 479.826 153.17H347.345H347.587Z"
262
- fill="#1A1A1A" />
263
- <path
264
- d="M153.33 286.339C152.848 287.306 153.33 288.272 154.537 288.272H286.776C287.742 288.272 288.465 287.306 287.983 286.339L221.863 154.139C221.381 153.172 219.933 153.172 219.45 154.139L153.33 286.339Z"
265
- fill="#1A1A1A" />
266
- </g>
267
- <defs>
268
- <clipPath id="clip0_1042_512">
269
- <rect width="637" height="637" fill="white" />
270
- </clipPath>
271
- </defs>
272
- </svg>
273
- </div>
274
- <span class="badge" id="hostnameBadge"></span>
275
- <script>
276
- document.addEventListener('DOMContentLoaded', function () {
277
- var badge = document.getElementById('hostnameBadge');
278
- badge.textContent = window.location.hostname + ':' + window.location.port
279
- });
280
- </script>
281
- <h1 class="headline">Visualize & Collaborate</h1>
282
- <p class="subhead">A free sandbox for you to collaborate with others, visualize your flows, pipelines, and
283
- more.
284
- </p>
285
- <div class="actions">
286
- <button class="primary" id="openBtn">Access Sandbox</button>
287
- <div class="hint" id="hint" style="color: #aab4c6; font-size: 12px; display: none"></div>
138
+
139
+ button.primary {
140
+ appearance: none;
141
+ border: none;
142
+ border-radius: 10px;
143
+ padding: 14px 24px;
144
+ background: linear-gradient(135deg, var(--brand-primary) 0%, #1b73ff 100%);
145
+ color: white;
146
+ font-weight: 600;
147
+ cursor: pointer;
148
+ }
149
+
150
+ button.primary:disabled {
151
+ opacity: 0.6;
152
+ cursor: not-allowed;
153
+ }
154
+
155
+ .checkbox {
156
+ display: inline-flex;
157
+ align-items: center;
158
+ gap: 8px;
159
+ color: #a5adba;
160
+ user-select: none;
161
+ margin-top: 6px;
162
+ }
163
+
164
+ .footer-links {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 10px;
168
+ color: #7d8696;
169
+ }
170
+
171
+ .footer-links a {
172
+ color: #aab4c6;
173
+ text-decoration: none;
174
+ }
175
+
176
+ .footer-links a:hover {
177
+ color: #d3dcf0;
178
+ }
179
+
180
+ .preview-wrap {
181
+ width: 100%;
182
+ max-width: 720px;
183
+ border-radius: 14px;
184
+ overflow: hidden;
185
+ border: 1px solid rgba(255, 255, 255, 0.1);
186
+ box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45);
187
+ transform: translateZ(0);
188
+ background: rgba(255, 255, 255, 0.03);
189
+ backdrop-filter: blur(6px) saturate(120%);
190
+ }
191
+
192
+ .preview-image {
193
+ display: block;
194
+ width: 100%;
195
+ height: auto;
196
+ }
197
+
198
+ @media (max-width: 960px) {
199
+ .content-grid {
200
+ grid-template-columns: 1fr;
201
+ gap: 24px;
202
+ }
203
+
204
+ .left {
205
+ order: 2;
206
+ }
207
+
208
+ .right {
209
+ order: 1;
210
+ }
211
+
212
+ .hero {
213
+ text-align: left;
214
+ align-items: flex-start;
215
+ }
216
+
217
+ .actions {
218
+ justify-content: flex-start;
219
+ }
220
+ }
221
+ </style>
222
+ </head>
223
+
224
+ <body>
225
+ <div class="landing-root">
226
+ <div class="landing-container">
227
+ <div class="content-grid">
228
+ <div class="left">
229
+ <div class="hero">
230
+ <div class="logo" aria-hidden="true">
231
+ <svg width="100%" height="100%" viewBox="0 0 637 637" fill="none" xmlns="http://www.w3.org/2000/svg">
232
+ <g clip-path="url(#clip0_1042_512)">
233
+ <rect width="637" height="637" />
234
+ <path
235
+ d="M693.161 -427.743L-623.632 1532.31L-591.107 1552.06L725.686 -407.988L693.161 -427.743Z"
236
+ fill="#EC3F4A"
237
+ />
238
+ <path
239
+ d="M725.695 -407.962L-591.097 1552.09L-571.511 1563.98L745.281 -396.066L725.695 -407.962Z"
240
+ fill="#1A1A1A"
241
+ />
242
+ <path
243
+ d="M745.281 -396.071L-571.511 1563.98L-538.986 1583.73L777.807 -376.315L745.281 -396.071Z"
244
+ fill="#FF8A1D"
245
+ />
246
+ <path
247
+ d="M777.815 -376.302L-538.978 1583.75L-519.391 1595.64L797.402 -364.406L777.815 -376.302Z"
248
+ fill="#1A1A1A"
249
+ />
250
+ <path
251
+ d="M797.394 -364.425L-519.399 1595.62L-486.874 1615.38L829.919 -344.67L797.394 -364.425Z"
252
+ fill="#5EC72D"
253
+ />
254
+ <path
255
+ d="M829.913 -344.684L-486.879 1615.37L-467.293 1627.26L849.499 -332.787L829.913 -344.684Z"
256
+ fill="#1A1A1A"
257
+ />
258
+ <path
259
+ d="M849.467 -332.791L-467.326 1627.26L-434.801 1647.01L881.992 -313.035L849.467 -332.791Z"
260
+ fill="#42C3F7"
261
+ />
262
+ <path
263
+ d="M882 -313.038L-434.792 1647.01L-415.206 1658.91L901.587 -301.142L882 -313.038Z"
264
+ fill="#1A1A1A"
265
+ />
266
+ <path
267
+ d="M673.55 -439.635L-643.242 1520.42L-623.656 1532.31L693.136 -427.738L673.55 -439.635Z"
268
+ fill="#1A1A1A"
269
+ />
270
+ <path
271
+ d="M512.644 100H121.718C109.652 100 100 109.667 100 121.751V513.277C100 525.361 109.652 535.028 121.718 535.028H512.644C524.71 535.028 534.362 525.361 534.362 513.277V121.751C534.362 109.667 524.71 100 512.644 100Z"
272
+ fill="white"
273
+ />
274
+ <path
275
+ d="M413.706 481.86C451.11 481.86 481.274 451.649 481.274 414.189C481.274 376.728 451.11 346.518 413.706 346.518C376.303 346.518 346.139 376.728 346.139 414.189C346.139 451.649 376.303 481.86 413.706 481.86Z"
276
+ fill="#1A1A1A"
277
+ />
278
+ <path
279
+ d="M153.089 347.968C153.089 347.243 153.813 346.518 154.537 346.518H287.017C287.741 346.518 288.465 347.243 288.465 347.968V412.98C288.465 413.705 287.741 414.43 287.017 414.43H257.095C256.371 414.43 255.647 415.155 255.647 415.88V480.893C255.647 481.618 254.923 482.343 254.199 482.343H188.321C187.597 482.343 186.873 481.618 186.873 480.893V415.88C186.873 415.155 186.149 414.43 185.425 414.43H154.296C153.572 414.43 152.848 413.705 152.848 412.98V347.968H153.089Z"
280
+ fill="#1A1A1A"
281
+ />
282
+ <path
283
+ d="M347.587 153.17C346.863 153.17 346.139 153.895 346.139 154.621V223.017C346.139 259.269 376.303 288.513 413.706 288.513C451.11 288.513 481.274 259.269 481.274 223.017V154.621C481.274 153.895 480.55 153.17 479.826 153.17H347.345H347.587Z"
284
+ fill="#1A1A1A"
285
+ />
286
+ <path
287
+ d="M153.33 286.339C152.848 287.306 153.33 288.272 154.537 288.272H286.776C287.742 288.272 288.465 287.306 287.983 286.339L221.863 154.139C221.381 153.172 219.933 153.172 219.45 154.139L153.33 286.339Z"
288
+ fill="#1A1A1A"
289
+ />
290
+ </g>
291
+ <defs>
292
+ <clipPath id="clip0_1042_512">
293
+ <rect width="637" height="637" fill="white" />
294
+ </clipPath>
295
+ </defs>
296
+ </svg>
297
+ </div>
298
+ <span class="badge" id="hostnameBadge"></span>
299
+ <script>
300
+ document.addEventListener('DOMContentLoaded', function () {
301
+ var badge = document.getElementById('hostnameBadge');
302
+ badge.textContent = window.location.hostname + ':' + window.location.port;
303
+ });
304
+ </script>
305
+ <h1 class="headline">Visualize & Collaborate</h1>
306
+ <p class="subhead">
307
+ A free sandbox for you to collaborate with others, visualize your flows, pipelines, and more.
308
+ </p>
309
+ <div class="actions">
310
+ <button class="primary" id="openBtn">Access Sandbox</button>
311
+ <div class="hint" id="hint" style="color: #aab4c6; font-size: 12px; display: none"></div>
312
+ </div>
313
+ <label class="checkbox">
314
+ <input type="checkbox" id="dontShowAgain" />
315
+ <span>Don’t show this again</span>
316
+ </label>
288
317
  </div>
289
- <label class="checkbox">
290
- <input type="checkbox" id="dontShowAgain" />
291
- <span>Don’t show this again</span>
292
- </label>
293
318
  </div>
294
319
  </div>
295
- </div>
296
320
 
297
- <div class="footer-links" style="position: absolute; bottom: 16px; left: auto;">
298
- <a href="https://on.auto/docs" target="_blank" rel="noreferrer">
299
- <i class="fab fa-readme"></i> Docs
300
- </a>
301
- <span>·</span>
302
- <a href="https://github.com/SamHatoum/auto-engineer" target="_blank" rel="noreferrer">
303
- <i class="fab fa-github"></i> GitHub
304
- </a>
321
+ <div class="footer-links" style="position: absolute; bottom: 16px; left: auto">
322
+ <a href="https://on.auto/docs" target="_blank" rel="noreferrer"> <i class="fab fa-readme"></i> Docs </a>
323
+ <span>·</span>
324
+ <a href="https://github.com/SamHatoum/auto-engineer" target="_blank" rel="noreferrer">
325
+ <i class="fab fa-github"></i> GitHub
326
+ </a>
327
+ </div>
305
328
  </div>
306
329
  </div>
307
- </div>
308
-
309
- <script>
310
- (function () {
311
- var STORAGE_KEY = 'onauto_shell_skipLanding';
312
-
313
- var hostedUrl = 'https://sandbox.on.auto';
314
- var skip = false;
315
- try {
316
- skip = localStorage.getItem(STORAGE_KEY) === 'true';
317
- } catch (e) { }
318
-
319
- if (skip) {
320
- window.location.replace(hostedUrl);
321
- return;
322
- }
323
330
 
324
- var openBtn = document.getElementById('openBtn');
325
- var hint = document.getElementById('hint');
326
- var dontShowAgain = document.getElementById('dontShowAgain');
331
+ <script>
332
+ (function () {
333
+ var STORAGE_KEY = 'onauto_shell_skipLanding';
327
334
 
328
- openBtn.addEventListener('click', function () {
335
+ var hostedUrl = 'https://sandbox.on.auto';
336
+ var skip = false;
329
337
  try {
330
- if (dontShowAgain && dontShowAgain.checked) {
331
- localStorage.setItem(STORAGE_KEY, 'true');
332
- window.location.replace(hostedUrl);
333
- return;
334
- }
335
- } catch (e) { }
336
- window.location.assign(hostedUrl);
337
- });
338
- })();
339
- </script>
340
- </body>
341
-
342
- </html>
338
+ skip = localStorage.getItem(STORAGE_KEY) === 'true';
339
+ } catch (e) {}
340
+
341
+ if (skip) {
342
+ window.location.replace(hostedUrl);
343
+ return;
344
+ }
345
+
346
+ var openBtn = document.getElementById('openBtn');
347
+ var hint = document.getElementById('hint');
348
+ var dontShowAgain = document.getElementById('dontShowAgain');
349
+
350
+ openBtn.addEventListener('click', function () {
351
+ try {
352
+ if (dontShowAgain && dontShowAgain.checked) {
353
+ localStorage.setItem(STORAGE_KEY, 'true');
354
+ window.location.replace(hostedUrl);
355
+ return;
356
+ }
357
+ } catch (e) {}
358
+ window.location.assign(hostedUrl);
359
+ });
360
+ })();
361
+ </script>
362
+ </body>
363
+ </html>