loomrail 0.1.0-alpha.1

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 (38) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +266 -0
  4. package/apps/cli/dist/index.js +11154 -0
  5. package/apps/cli/migrations/0001_initial.sql +99 -0
  6. package/apps/cli/migrations/0002_mock_workflow.sql +169 -0
  7. package/apps/cli/migrations/0003_budget_pause_recovery.sql +154 -0
  8. package/apps/cli/migrations/0004_pipeline_started_budget_backfill.sql +72 -0
  9. package/apps/cli/migrations/0005_acceptance_evidence.sql +129 -0
  10. package/apps/cli/migrations/0006_session_handoff.sql +166 -0
  11. package/apps/cli/migrations/0007_pack_share_backoff.sql +11 -0
  12. package/apps/cli/migrations/0008_stage_attempt_counter_backfill.sql +169 -0
  13. package/apps/cli/migrations/0009_session_window_occupancy.sql +44 -0
  14. package/apps/cli/migrations/0010_provider_session_pid.sql +5 -0
  15. package/apps/cli/migrations/0011_work_item_workspaces.sql +94 -0
  16. package/apps/cli/migrations/0012_registered_repository_projects.sql +54 -0
  17. package/apps/cli/migrations/0013_stage_attempt_result_tree.sql +166 -0
  18. package/apps/cli/migrations/0014_live_evidence_provider.sql +49 -0
  19. package/apps/web/dist/assets/index-DjwvCSSY.js +5 -0
  20. package/apps/web/dist/assets/index-DjwvCSSY.js.map +1 -0
  21. package/apps/web/dist/assets/index-Z88TqCIf.css +1 -0
  22. package/apps/web/dist/assets/radix-vendor-CRdHXIPR.js +42 -0
  23. package/apps/web/dist/assets/radix-vendor-CRdHXIPR.js.map +1 -0
  24. package/apps/web/dist/assets/react-vendor-BicOiEU0.js +10 -0
  25. package/apps/web/dist/assets/react-vendor-BicOiEU0.js.map +1 -0
  26. package/apps/web/dist/assets/rolldown-runtime-CbXtAM7H.js +1 -0
  27. package/apps/web/dist/assets/tanstack-vendor-ec08LVZ_.js +2 -0
  28. package/apps/web/dist/assets/tanstack-vendor-ec08LVZ_.js.map +1 -0
  29. package/apps/web/dist/assets/validation-vendor-CGrOSWd3.js +65 -0
  30. package/apps/web/dist/assets/validation-vendor-CGrOSWd3.js.map +1 -0
  31. package/apps/web/dist/favicon.svg +5 -0
  32. package/apps/web/dist/index.html +60 -0
  33. package/apps/web/dist/theme-bootstrap.js +46 -0
  34. package/fixtures/projects/api-service-b/README.md +3 -0
  35. package/fixtures/projects/api-service-b/loomrail-fixture.json +6 -0
  36. package/fixtures/projects/web-app-a/README.md +3 -0
  37. package/fixtures/projects/web-app-a/loomrail-fixture.json +6 -0
  38. package/package.json +46 -0
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96">
2
+ <rect width="96" height="96" rx="24" fill="#5e6ad2" />
3
+ <path d="M27 23v46h46" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="10" />
4
+ <path d="M48 23v25h25" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="10" />
5
+ </svg>
@@ -0,0 +1,60 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="color-scheme" content="light dark" />
7
+ <meta name="description" content="The local control plane for accountable AI software teams." />
8
+ <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
9
+ <script src="/theme-bootstrap.js"></script>
10
+ <title>Loomrail</title>
11
+ <script type="module" crossorigin src="/assets/index-DjwvCSSY.js"></script>
12
+ <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-CbXtAM7H.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/react-vendor-BicOiEU0.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/tanstack-vendor-ec08LVZ_.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/validation-vendor-CGrOSWd3.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/radix-vendor-CRdHXIPR.js">
17
+ <link rel="stylesheet" crossorigin href="/assets/index-Z88TqCIf.css">
18
+ </head>
19
+ <body>
20
+ <div id="root">
21
+ <div aria-busy="true" class="app-shell app-shell--loading">
22
+ <aside aria-hidden="true" class="app-sidebar app-sidebar--loading"></aside>
23
+ <section class="app-surface app-surface--loading">
24
+ <span class="app-loading-mark" role="status">
25
+ <span class="lr-visually-hidden">
26
+ <span class="app-loading-copy app-loading-copy--en" lang="en">Connecting…</span>
27
+ <span class="app-loading-copy app-loading-copy--ru" lang="ru">Подключение…</span>
28
+ </span>
29
+ <svg
30
+ aria-hidden="true"
31
+ class="app-brand-mark"
32
+ focusable="false"
33
+ height="40"
34
+ viewBox="0 0 96 96"
35
+ width="40"
36
+ >
37
+ <rect fill="#5e6ad2" height="96" rx="24" width="96"></rect>
38
+ <path
39
+ d="M27 23v46h46"
40
+ fill="none"
41
+ stroke="#fff"
42
+ stroke-linecap="round"
43
+ stroke-linejoin="round"
44
+ stroke-width="10"
45
+ ></path>
46
+ <path
47
+ d="M48 23v25h25"
48
+ fill="none"
49
+ stroke="#fff"
50
+ stroke-linecap="round"
51
+ stroke-linejoin="round"
52
+ stroke-width="10"
53
+ ></path>
54
+ </svg>
55
+ </span>
56
+ </section>
57
+ </div>
58
+ </div>
59
+ </body>
60
+ </html>
@@ -0,0 +1,46 @@
1
+ try {
2
+ const preference = globalThis.localStorage.getItem("loomrail-theme");
3
+ if (preference === "dark" || preference === "light") {
4
+ globalThis.document.documentElement.dataset.theme = preference;
5
+ }
6
+ } catch {
7
+ // Theme persistence is an enhancement; the system preference remains the safe fallback.
8
+ }
9
+
10
+ try {
11
+ const density = globalThis.localStorage.getItem("loomrail-density");
12
+ if (density === "compact") {
13
+ globalThis.document.documentElement.dataset.density = density;
14
+ }
15
+ } catch {
16
+ // Density is an enhancement; the comfortable spacing in the stylesheet remains the fallback.
17
+ }
18
+
19
+ try {
20
+ // Bounds mirror `panelBounds` in src/layout.ts; a unit test fails if the two ever disagree.
21
+ const panels = [
22
+ { key: "loomrail-panel-sidebar", max: 360, min: 200, property: "--lr-size-sidebar" },
23
+ { key: "loomrail-panel-inspector", max: 520, min: 280, property: "--lr-size-inspector" },
24
+ ];
25
+ for (const panel of panels) {
26
+ const stored = Number(globalThis.localStorage.getItem(panel.key));
27
+ if (!Number.isFinite(stored) || stored === 0) continue;
28
+ const width = Math.min(panel.max, Math.max(panel.min, Math.round(stored)));
29
+ globalThis.document.documentElement.style.setProperty(panel.property, `${width}px`);
30
+ }
31
+ } catch {
32
+ // Panel widths are an enhancement; the token defaults remain the safe fallback.
33
+ }
34
+
35
+ try {
36
+ const storedLocale = globalThis.localStorage.getItem("loomrail.locale");
37
+ const locale =
38
+ storedLocale === "ru" || storedLocale === "en"
39
+ ? storedLocale
40
+ : globalThis.navigator.language.toLowerCase().startsWith("ru")
41
+ ? "ru"
42
+ : "en";
43
+ globalThis.document.documentElement.lang = locale;
44
+ } catch {
45
+ // The static document language remains the safe fallback when storage is unavailable.
46
+ }
@@ -0,0 +1,3 @@
1
+ # Fixture API service
2
+
3
+ Synthetic Phase 0 fixture. It exists to verify Project isolation and contains no executable setup.
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "fixtureId": "api-service-b",
4
+ "projectId": "project-fixture-api-service-b",
5
+ "name": "Fixture API service"
6
+ }
@@ -0,0 +1,3 @@
1
+ # Fixture web application
2
+
3
+ Synthetic Phase 0 fixture. Loomrail may register this directory as local metadata but must not execute its contents.
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "fixtureId": "web-app-a",
4
+ "projectId": "project-fixture-web-app-a",
5
+ "name": "Fixture web application"
6
+ }
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "loomrail",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "The local control plane for accountable AI software teams.",
5
+ "keywords": [
6
+ "ai-agents",
7
+ "developer-tools",
8
+ "local-first",
9
+ "workflow",
10
+ "codex",
11
+ "claude"
12
+ ],
13
+ "license": "Apache-2.0",
14
+ "homepage": "https://github.com/loomrail/loomrail#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/loomrail/loomrail/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/loomrail/loomrail.git"
21
+ },
22
+ "type": "module",
23
+ "bin": {
24
+ "loomrail": "apps/cli/dist/index.js"
25
+ },
26
+ "engines": {
27
+ "node": ">=24.19 <25"
28
+ },
29
+ "dependencies": {
30
+ "@fastify/cookie": "^11.0.0",
31
+ "@fastify/helmet": "^13.0.0",
32
+ "@fastify/static": "^10.1.3",
33
+ "fastify": "^5.10.0",
34
+ "open": "^10.0.0",
35
+ "zod": "^4.0.0"
36
+ },
37
+ "files": [
38
+ "apps/cli/dist",
39
+ "apps/cli/migrations",
40
+ "apps/web/dist",
41
+ "fixtures/projects",
42
+ "README.md",
43
+ "LICENSE",
44
+ "NOTICE"
45
+ ]
46
+ }