compounding-loop 0.1.0 → 0.2.0

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 (71) hide show
  1. package/README.md +36 -6
  2. package/dist/cli/checkLanes.js +60 -0
  3. package/dist/cli/checkLanes.js.map +1 -0
  4. package/dist/cli/doctor.js +54 -0
  5. package/dist/cli/doctor.js.map +1 -0
  6. package/dist/cli/index.js +87 -3
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/init.js +2 -1
  9. package/dist/cli/init.js.map +1 -1
  10. package/dist/cli/laneStatus.js +52 -0
  11. package/dist/cli/laneStatus.js.map +1 -0
  12. package/dist/cli/lanesInit.js +56 -0
  13. package/dist/cli/lanesInit.js.map +1 -0
  14. package/dist/cli/lock.js +42 -0
  15. package/dist/cli/lock.js.map +1 -0
  16. package/dist/cli/loops.js +23 -3
  17. package/dist/cli/loops.js.map +1 -1
  18. package/dist/cli/new.js +5 -5
  19. package/dist/cli/new.js.map +1 -1
  20. package/dist/cli/run.js +104 -16
  21. package/dist/cli/run.js.map +1 -1
  22. package/dist/core/doctor.js +49 -0
  23. package/dist/core/doctor.js.map +1 -0
  24. package/dist/core/laneStatus.js +82 -0
  25. package/dist/core/laneStatus.js.map +1 -0
  26. package/dist/core/lanes.js +139 -0
  27. package/dist/core/lanes.js.map +1 -0
  28. package/dist/core/lanesInit.js +143 -0
  29. package/dist/core/lanesInit.js.map +1 -0
  30. package/dist/core/runPrompt.js +1 -1
  31. package/dist/core/table.js +20 -1
  32. package/dist/core/table.js.map +1 -1
  33. package/dist/server/data.js +20 -6
  34. package/dist/server/data.js.map +1 -1
  35. package/dist/server/events.js +1 -0
  36. package/dist/server/events.js.map +1 -1
  37. package/dist/server/health.js +65 -5
  38. package/dist/server/health.js.map +1 -1
  39. package/dist/server/loops.js +6 -3
  40. package/dist/server/loops.js.map +1 -1
  41. package/dist/server/this-repo.json +371 -0
  42. package/dist/web/assets/index-B16QCSnY.css +2 -0
  43. package/dist/web/assets/index-CS82DKbF.js +49 -0
  44. package/dist/web/index.html +3 -3
  45. package/method/COMPOUNDING_LOOP.md +34 -0
  46. package/method/example/K-0002.md +16 -0
  47. package/method/example/K-0003.md +16 -0
  48. package/package.json +6 -1
  49. package/plugin/.claude-plugin/plugin.json +1 -1
  50. package/runners/github-actions/lanes.yml +103 -0
  51. package/runners/local/README.md +2 -1
  52. package/runners/local/launchd.plist +36 -0
  53. package/runners/routine/README.md +38 -1
  54. package/runners/routine/control-room-prompt.md +16 -0
  55. package/runners/routine/lane-prompt.md +12 -0
  56. package/runners/routine/prompt.md +1 -1
  57. package/templates/chrome-extension/extension/icons/icon128.png +0 -0
  58. package/templates/chrome-extension/extension/icons/icon16.png +0 -0
  59. package/templates/chrome-extension/extension/icons/icon48.png +0 -0
  60. package/templates/chrome-extension/extension/manifest.json +19 -3
  61. package/templates/chrome-extension/gitignore +1 -1
  62. package/templates/lanes/README.md +23 -0
  63. package/templates/lanes/ci-check-lanes.yml +38 -0
  64. package/templates/lanes/claude-section.md +17 -0
  65. package/templates/lanes/control-room.md +3 -0
  66. package/templates/lanes/outbox.md +5 -0
  67. package/templates/lanes/task.md +36 -0
  68. package/templates/static-site/.ai/loop-prompt.md +1 -1
  69. package/templates/static-site/gitignore +1 -1
  70. package/dist/web/assets/index-BDdtnG33.js +0 -49
  71. package/dist/web/assets/index-D3-N8DN4.css +0 -2
@@ -0,0 +1,371 @@
1
+ {
2
+ "loop": {
3
+ "id": "compounding-loop",
4
+ "name": "compounding-loop (this repo)",
5
+ "url": "https://github.com/Minntooos/Compounding-Loop",
6
+ "state": "done",
7
+ "reason": "round 1 built unattended: all five lanes done",
8
+ "round": 1,
9
+ "roundsTotal": 2,
10
+ "run": 15,
11
+ "runLimit": 150,
12
+ "lastCommit": {
13
+ "sha": "3385cdf",
14
+ "at": "2026-10-08T17:58:34.000Z",
15
+ "message": "Release 0.1.0"
16
+ },
17
+ "lanes": [
18
+ {
19
+ "name": "core",
20
+ "state": "done",
21
+ "run": 3,
22
+ "limit": 30,
23
+ "lastCommit": {
24
+ "sha": "01d2526",
25
+ "subject": "core: DONE, handoff, outbox",
26
+ "at": "2026-10-08T07:10:35.000Z"
27
+ },
28
+ "locked": false,
29
+ "unanswered": []
30
+ },
31
+ {
32
+ "name": "kit",
33
+ "state": "done",
34
+ "run": 2,
35
+ "limit": 30,
36
+ "lastCommit": {
37
+ "sha": "cbf9e96",
38
+ "subject": "kit: outbox",
39
+ "at": "2026-10-08T06:22:28.000Z"
40
+ },
41
+ "locked": false,
42
+ "unanswered": []
43
+ },
44
+ {
45
+ "name": "server",
46
+ "state": "done",
47
+ "run": 1,
48
+ "limit": 30,
49
+ "lastCommit": {
50
+ "sha": "bcc83ca",
51
+ "subject": "server: lane DONE, retro, knowledge entry",
52
+ "at": "2026-10-08T05:46:45.000Z"
53
+ },
54
+ "locked": false,
55
+ "unanswered": []
56
+ },
57
+ {
58
+ "name": "web",
59
+ "state": "done",
60
+ "run": 8,
61
+ "limit": 30,
62
+ "lastCommit": {
63
+ "sha": "7555d39",
64
+ "subject": "web: run 8, lane DONE",
65
+ "at": "2026-10-08T12:45:28.000Z"
66
+ },
67
+ "locked": false,
68
+ "unanswered": []
69
+ },
70
+ {
71
+ "name": "docs",
72
+ "state": "done",
73
+ "run": 1,
74
+ "limit": 30,
75
+ "lastCommit": {
76
+ "sha": "a3b6e4c",
77
+ "subject": "docs: demo pages workflow, DONE",
78
+ "at": "2026-10-08T06:02:45.000Z"
79
+ },
80
+ "locked": false,
81
+ "unanswered": []
82
+ }
83
+ ],
84
+ "timeline": [
85
+ {
86
+ "sha": "3385cdf",
87
+ "at": "2026-10-08T17:58:34.000Z",
88
+ "message": "Release 0.1.0"
89
+ },
90
+ {
91
+ "sha": "36953a0",
92
+ "at": "2026-10-08T15:29:55.000Z",
93
+ "message": "control room: product DONE"
94
+ },
95
+ {
96
+ "sha": "b85e7d3",
97
+ "at": "2026-10-08T14:30:53.000Z",
98
+ "message": "Close three launch gaps: settings route, recorded test results, full Code of Conduct"
99
+ },
100
+ {
101
+ "sha": "6bfd42b",
102
+ "at": "2026-10-08T14:20:51.000Z",
103
+ "message": "Fix tests on Windows: run tsx through node, use an absolute missing-file URL"
104
+ },
105
+ {
106
+ "sha": "7555d39",
107
+ "at": "2026-10-08T12:45:28.000Z",
108
+ "message": "web: run 8, lane DONE"
109
+ },
110
+ {
111
+ "sha": "346d25d",
112
+ "at": "2026-10-08T12:31:01.000Z",
113
+ "message": "control room: tell web to finish with DONE"
114
+ },
115
+ {
116
+ "sha": "e874baa",
117
+ "at": "2026-10-08T11:45:26.000Z",
118
+ "message": "web: record run 7, request GET /api/settings"
119
+ },
120
+ {
121
+ "sha": "3e123ef",
122
+ "at": "2026-10-08T10:46:01.000Z",
123
+ "message": "web: unit tests for Loading and LoadError (busy state), jsx in root tsconfig"
124
+ },
125
+ {
126
+ "sha": "11c7e75",
127
+ "at": "2026-10-08T09:47:21.000Z",
128
+ "message": "web: record run 5 attempt and handoff"
129
+ },
130
+ {
131
+ "sha": "04a32c2",
132
+ "at": "2026-10-08T08:48:05.000Z",
133
+ "message": "web: record run 4 attempt and handoff"
134
+ },
135
+ {
136
+ "sha": "1fa8db2",
137
+ "at": "2026-10-08T07:46:38.000Z",
138
+ "message": "web: disable retry while refetching, error tests for health, inbox, loop detail"
139
+ },
140
+ {
141
+ "sha": "01d2526",
142
+ "at": "2026-10-08T07:10:35.000Z",
143
+ "message": "core: DONE, handoff, outbox"
144
+ },
145
+ {
146
+ "sha": "0f037ac",
147
+ "at": "2026-10-08T06:46:26.000Z",
148
+ "message": "web: shared loading and error states with retry"
149
+ },
150
+ {
151
+ "sha": "cbf9e96",
152
+ "at": "2026-10-08T06:22:28.000Z",
153
+ "message": "kit: outbox"
154
+ },
155
+ {
156
+ "sha": "f3d3f4b",
157
+ "at": "2026-10-08T06:22:20.000Z",
158
+ "message": "kit: ship template gitignore as gitignore, ignore loop runtime files, DONE"
159
+ },
160
+ {
161
+ "sha": "9ee6e75",
162
+ "at": "2026-10-08T06:11:23.000Z",
163
+ "message": "core: handoff, outbox"
164
+ },
165
+ {
166
+ "sha": "6ac5aff",
167
+ "at": "2026-10-08T06:11:14.000Z",
168
+ "message": "core: loop new writes gitignore as .gitignore and {{host}}; loop run honours session.lock and records runs.jsonl; DEFAULT_PROMPT mirrors routine prompt"
169
+ },
170
+ {
171
+ "sha": "a3b6e4c",
172
+ "at": "2026-10-08T06:02:45.000Z",
173
+ "message": "docs: demo pages workflow, DONE"
174
+ },
175
+ {
176
+ "sha": "8ff8c26",
177
+ "at": "2026-10-08T06:02:04.000Z",
178
+ "message": "docs: dashboard screenshot, command options"
179
+ },
180
+ {
181
+ "sha": "72dab42",
182
+ "at": "2026-10-08T06:01:11.000Z",
183
+ "message": "docs: social preview image"
184
+ },
185
+ {
186
+ "sha": "6f4d759",
187
+ "at": "2026-10-08T06:00:18.000Z",
188
+ "message": "docs: handoff"
189
+ },
190
+ {
191
+ "sha": "a7d2cdd",
192
+ "at": "2026-10-08T06:00:18.000Z",
193
+ "message": "docs: launch drafts"
194
+ },
195
+ {
196
+ "sha": "5456d6d",
197
+ "at": "2026-10-08T05:59:32.000Z",
198
+ "message": "docs: README with proof table, docs pages, README/link checks"
199
+ },
200
+ {
201
+ "sha": "926133b",
202
+ "at": "2026-10-08T05:57:27.000Z",
203
+ "message": "docs: CI workflow, contributing, conduct, security, changelog, templates, marketplace"
204
+ },
205
+ {
206
+ "sha": "73bafcb",
207
+ "at": "2026-10-08T05:53:24.000Z",
208
+ "message": "web: tab arrow keys, contrast test, read-only inbox without a server, AA-safe accent buttons"
209
+ },
210
+ {
211
+ "sha": "c4520a5",
212
+ "at": "2026-10-08T05:52:21.000Z",
213
+ "message": "web: new-loop wizard with live brief score and first-run state"
214
+ },
215
+ {
216
+ "sha": "185bff3",
217
+ "at": "2026-10-08T05:51:29.000Z",
218
+ "message": "web: loop detail, inbox, health, settings, live updates; e2e on the demo server"
219
+ },
220
+ {
221
+ "sha": "360ae18",
222
+ "at": "2026-10-08T05:48:00.000Z",
223
+ "message": "web: app shell, command palette, theme, hash router and Fleet with e2e"
224
+ },
225
+ {
226
+ "sha": "bcc83ca",
227
+ "at": "2026-10-08T05:46:45.000Z",
228
+ "message": "server: lane DONE, retro, knowledge entry"
229
+ },
230
+ {
231
+ "sha": "bee870d",
232
+ "at": "2026-10-08T05:45:20.000Z",
233
+ "message": "server: serve the built dashboard with a strict CSP; static demo API export"
234
+ },
235
+ {
236
+ "sha": "c6faf17",
237
+ "at": "2026-10-08T05:43:30.000Z",
238
+ "message": "server: health checks (leak, stale lock, short runs, failing tests, runner silent) feed status and /api/checks"
239
+ },
240
+ {
241
+ "sha": "55749c0",
242
+ "at": "2026-10-08T05:41:10.000Z",
243
+ "message": "server: SSE /api/events with a polling clone watcher and periodic git fetch"
244
+ },
245
+ {
246
+ "sha": "a75365c",
247
+ "at": "2026-10-08T05:39:19.000Z",
248
+ "message": "server: answer endpoint with host/origin/content-type guard"
249
+ },
250
+ {
251
+ "sha": "8955f5c",
252
+ "at": "2026-10-08T05:37:30.000Z",
253
+ "message": "server: read real loops, inbox and detail from a projects folder"
254
+ },
255
+ {
256
+ "sha": "803d0db",
257
+ "at": "2026-10-08T05:35:49.000Z",
258
+ "message": "server: createApp, startServer and read routes from the demo snapshot"
259
+ },
260
+ {
261
+ "sha": "88eeea0",
262
+ "at": "2026-10-08T05:34:46.000Z",
263
+ "message": "server: demo snapshot builder, scrubbed five-sites.json, shared API types"
264
+ },
265
+ {
266
+ "sha": "1abf8d9",
267
+ "at": "2026-10-08T05:31:46.000Z",
268
+ "message": "kit: method protocol files, lock rule in static-site loop prompt, stricter consistency tests"
269
+ },
270
+ {
271
+ "sha": "d48aab3",
272
+ "at": "2026-10-08T05:29:55.000Z",
273
+ "message": "kit: outbox requests for core (gitignore in tarball) and docs (marketplace.json)"
274
+ },
275
+ {
276
+ "sha": "aaf8ab9",
277
+ "at": "2026-10-08T05:29:09.000Z",
278
+ "message": "kit: Chrome extension template with check script and Playwright extension test"
279
+ },
280
+ {
281
+ "sha": "c8ddbae",
282
+ "at": "2026-10-08T05:28:05.000Z",
283
+ "message": "kit: Claude Code plugin with loop-init, handoff, retro and stuck commands"
284
+ },
285
+ {
286
+ "sha": "3c0b4c8",
287
+ "at": "2026-10-08T05:27:20.000Z",
288
+ "message": "kit: fix runner review findings (github_token, allowedTools, XML encoding, lock wording)"
289
+ },
290
+ {
291
+ "sha": "8201e6e",
292
+ "at": "2026-10-08T05:26:35.000Z",
293
+ "message": "kit: GitHub Actions workflow and local scheduler configs with tests"
294
+ },
295
+ {
296
+ "sha": "d8cc97d",
297
+ "at": "2026-10-08T05:25:56.000Z",
298
+ "message": "kit: routine runner prompt and README; loop run test accepts the shipped prompt"
299
+ },
300
+ {
301
+ "sha": "2b919a7",
302
+ "at": "2026-10-08T05:25:03.000Z",
303
+ "message": "kit: static-site check rejects invalid hostnames; flag underscore-name bug to core"
304
+ },
305
+ {
306
+ "sha": "61467c3",
307
+ "at": "2026-10-08T05:25:03.000Z",
308
+ "message": "kit: static-site template passes its own checks when freshly generated"
309
+ },
310
+ {
311
+ "sha": "ea9869d",
312
+ "at": "2026-10-08T05:23:30.000Z",
313
+ "message": "core: dashboard shutdown, busy-port hint, handoff"
314
+ },
315
+ {
316
+ "sha": "d6c7a02",
317
+ "at": "2026-10-08T05:23:30.000Z",
318
+ "message": "core: loop dashboard command with lazy server import"
319
+ },
320
+ {
321
+ "sha": "0e0d08f",
322
+ "at": "2026-10-08T05:22:11.000Z",
323
+ "message": "kit: fix review findings (empty shipped index, prefilled goal, lock file named)"
324
+ },
325
+ {
326
+ "sha": "d4f7299",
327
+ "at": "2026-10-08T05:22:10.000Z",
328
+ "message": "kit: operating card, task template, knowledge index and unattended rules with tests"
329
+ },
330
+ {
331
+ "sha": "0596cfe",
332
+ "at": "2026-10-08T05:21:44.000Z",
333
+ "message": "core: loop run allows the tools a round needs, handles Windows claude lookup"
334
+ }
335
+ ],
336
+ "contract": [
337
+ {
338
+ "text": "core lane: every done-when passes",
339
+ "pass": true
340
+ },
341
+ {
342
+ "text": "kit lane: every done-when passes",
343
+ "pass": true
344
+ },
345
+ {
346
+ "text": "server lane: every done-when passes",
347
+ "pass": true
348
+ },
349
+ {
350
+ "text": "web lane: every done-when passes",
351
+ "pass": true
352
+ },
353
+ {
354
+ "text": "docs lane: every done-when passes",
355
+ "pass": true
356
+ }
357
+ ],
358
+ "knowledge": [],
359
+ "decisions": [],
360
+ "history": []
361
+ },
362
+ "checks": [
363
+ {
364
+ "loopId": "compounding-loop",
365
+ "kind": "failing-tests",
366
+ "ok": true,
367
+ "reason": "all tests pass",
368
+ "proof": "npm test was green at 3385cdf"
369
+ }
370
+ ]
371
+ }
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"Inter Variable", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, monospace;--spacing:.25rem;--container-xl:36rem;--container-2xl:42rem;--container-6xl:72rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.top-24{top:calc(var(--spacing) * 24)}.right-4{right:calc(var(--spacing) * 4)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-full{height:100%}.max-h-72{max-height:calc(var(--spacing) * 72)}.w-\[min\(32rem\,calc\(100vw-2rem\)\)\]{width:min(32rem,100vw - 2rem)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[20px\]{font-size:20px}.text-\[28px\]{font-size:28px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.lowercase{text-transform:lowercase}.underline{text-decoration-line:underline}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.outline-none{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\:checked\]\:border-\[var\(--accent\)\]:has(:checked){border-color:var(--accent)}.aria-pressed\:font-semibold[aria-pressed=true]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.aria-pressed\:underline[aria-pressed=true]{text-decoration-line:underline}.aria-selected\:border-b-2[aria-selected=true]{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.aria-selected\:font-semibold[aria-selected=true]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.aria-\[current\=page\]\:bg-\[var\(--border\)\][aria-current=page]{background-color:var(--border)}.aria-\[current\=step\]\:font-semibold[aria-current=step]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[selected\=true\]\:border-\[var\(--accent\)\][data-selected=true]{border-color:var(--accent)}.data-\[selected\=true\]\:bg-\[var\(--border\)\][data-selected=true]{background-color:var(--border)}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10rem_1fr\]{grid-template-columns:10rem 1fr}}@media (width>=64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0b0d10;--surface:#13161b;--border:#232831;--text:#e6e8eb;--muted:#8b93a1;--accent:#8b7cff;--building:#4c8dff;--blocked:#f5a524;--done:#3ddc97;--failing:#f04d4d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#fafafa;--surface:#fff;--border:#e4e6ea;--text:#111318;--muted:#5b6370;--accent:#6c5ce7;--building:#2563eb;--blocked:#b45309;--done:#15803d;--failing:#dc2626;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}:root[data-theme=light]{--bg:#fafafa;--surface:#fff;--border:#e4e6ea;--text:#111318;--muted:#5b6370;--accent:#6c5ce7;--building:#2563eb;--blocked:#b45309;--done:#15803d;--failing:#dc2626;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px}a,button,input,[role=option]{outline-offset:2px}:focus-visible{outline:2px solid var(--accent)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}