@action-llama/action-llama 0.18.11 → 0.19.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.
- package/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +16 -158
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +10 -1
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +125 -121
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/session-loop.d.ts +22 -0
- package/dist/agents/session-loop.d.ts.map +1 -0
- package/dist/agents/session-loop.js +159 -0
- package/dist/agents/session-loop.js.map +1 -0
- package/dist/agents/types.d.ts +17 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +16 -117
- package/dist/cli/commands/run-agent.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts.map +1 -1
- package/dist/control/routes/dashboard-api.js +43 -0
- package/dist/control/routes/dashboard-api.js.map +1 -1
- package/dist/control/routes/stats.d.ts.map +1 -1
- package/dist/control/routes/stats.js +54 -0
- package/dist/control/routes/stats.js.map +1 -1
- package/dist/db/connection.d.ts +20 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +34 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +27 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +180 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +1383 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +158 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/docker/local-runtime.js +1 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +1 -1
- package/dist/docker/ssh-docker-runtime.js.map +1 -1
- package/dist/events/event-queue-sqlite.d.ts +8 -3
- package/dist/events/event-queue-sqlite.d.ts.map +1 -1
- package/dist/events/event-queue-sqlite.js +42 -41
- package/dist/events/event-queue-sqlite.js.map +1 -1
- package/dist/execution/execution.d.ts +1 -0
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +8 -3
- package/dist/execution/execution.js.map +1 -1
- package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
- package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
- package/dist/frontend/index.html +2 -2
- package/dist/gateway/frontend.d.ts +20 -0
- package/dist/gateway/frontend.d.ts.map +1 -0
- package/dist/gateway/frontend.js +80 -0
- package/dist/gateway/frontend.js.map +1 -0
- package/dist/gateway/index.d.ts +3 -70
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +109 -214
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/middleware/auth.d.ts +12 -0
- package/dist/gateway/middleware/auth.d.ts.map +1 -0
- package/dist/gateway/middleware/auth.js +25 -0
- package/dist/gateway/middleware/auth.js.map +1 -0
- package/dist/gateway/middleware/request-logging.d.ts +9 -0
- package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
- package/dist/gateway/middleware/request-logging.js +26 -0
- package/dist/gateway/middleware/request-logging.js.map +1 -0
- package/dist/gateway/middleware/telemetry.d.ts +7 -0
- package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
- package/dist/gateway/middleware/telemetry.js +28 -0
- package/dist/gateway/middleware/telemetry.js.map +1 -0
- package/dist/gateway/routes/chat.d.ts +32 -0
- package/dist/gateway/routes/chat.d.ts.map +1 -0
- package/dist/gateway/routes/chat.js +24 -0
- package/dist/gateway/routes/chat.js.map +1 -0
- package/dist/gateway/routes/dashboard.d.ts +19 -0
- package/dist/gateway/routes/dashboard.d.ts.map +1 -0
- package/dist/gateway/routes/dashboard.js +26 -0
- package/dist/gateway/routes/dashboard.js.map +1 -0
- package/dist/gateway/routes/execution.d.ts +24 -0
- package/dist/gateway/routes/execution.d.ts.map +1 -0
- package/dist/gateway/routes/execution.js +13 -0
- package/dist/gateway/routes/execution.js.map +1 -0
- package/dist/gateway/routes/system.d.ts +14 -0
- package/dist/gateway/routes/system.d.ts.map +1 -0
- package/dist/gateway/routes/system.js +18 -0
- package/dist/gateway/routes/system.js.map +1 -0
- package/dist/gateway/routes/webhooks.d.ts +20 -0
- package/dist/gateway/routes/webhooks.d.ts.map +1 -0
- package/dist/gateway/routes/webhooks.js +11 -0
- package/dist/gateway/routes/webhooks.js.map +1 -0
- package/dist/gateway/stores.d.ts +21 -0
- package/dist/gateway/stores.d.ts.map +1 -0
- package/dist/gateway/stores.js +24 -0
- package/dist/gateway/stores.js.map +1 -0
- package/dist/gateway/types.d.ts +65 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/dependencies.d.ts +11 -0
- package/dist/scheduler/dependencies.d.ts.map +1 -0
- package/dist/scheduler/dependencies.js +34 -0
- package/dist/scheduler/dependencies.js.map +1 -0
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +8 -2
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +20 -176
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/orphan-recovery.d.ts +25 -0
- package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
- package/dist/scheduler/orphan-recovery.js +130 -0
- package/dist/scheduler/orphan-recovery.js.map +1 -0
- package/dist/scheduler/persistence.d.ts +18 -0
- package/dist/scheduler/persistence.d.ts.map +1 -0
- package/dist/scheduler/persistence.js +42 -0
- package/dist/scheduler/persistence.js.map +1 -0
- package/dist/scheduler/shutdown.d.ts +2 -0
- package/dist/scheduler/shutdown.d.ts.map +1 -1
- package/dist/scheduler/shutdown.js +8 -1
- package/dist/scheduler/shutdown.js.map +1 -1
- package/dist/shared/config/index.d.ts +5 -0
- package/dist/shared/config/index.d.ts.map +1 -0
- package/dist/shared/config/index.js +5 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/load-agent.d.ts +27 -0
- package/dist/shared/config/load-agent.d.ts.map +1 -0
- package/dist/shared/config/load-agent.js +169 -0
- package/dist/shared/config/load-agent.js.map +1 -0
- package/dist/shared/config/load-project.d.ts +22 -0
- package/dist/shared/config/load-project.d.ts.map +1 -0
- package/dist/shared/config/load-project.js +84 -0
- package/dist/shared/config/load-project.js.map +1 -0
- package/dist/shared/config/types.d.ts +115 -0
- package/dist/shared/config/types.d.ts.map +1 -0
- package/dist/shared/config/types.js +2 -0
- package/dist/shared/config/types.js.map +1 -0
- package/dist/shared/config/validate.d.ts +4 -0
- package/dist/shared/config/validate.d.ts.map +1 -0
- package/dist/shared/config/validate.js +23 -0
- package/dist/shared/config/validate.js.map +1 -0
- package/dist/shared/config.d.ts +4 -161
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +5 -269
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +12 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
- package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
- package/dist/shared/persistence/backends/sqlite.js +107 -135
- package/dist/shared/persistence/backends/sqlite.js.map +1 -1
- package/dist/shared/queue-sqlite.d.ts +9 -4
- package/dist/shared/queue-sqlite.d.ts.map +1 -1
- package/dist/shared/queue-sqlite.js +41 -36
- package/dist/shared/queue-sqlite.js.map +1 -1
- package/dist/shared/state-store-sqlite.d.ts +8 -3
- package/dist/shared/state-store-sqlite.d.ts.map +1 -1
- package/dist/shared/state-store-sqlite.js +55 -37
- package/dist/shared/state-store-sqlite.js.map +1 -1
- package/dist/stats/store.d.ts +11 -2
- package/dist/stats/store.d.ts.map +1 -1
- package/dist/stats/store.js +200 -291
- package/dist/stats/store.js.map +1 -1
- package/package.json +4 -1
- package/dist/agents/execution-engine.d.ts +0 -19
- package/dist/agents/execution-engine.d.ts.map +0 -1
- package/dist/agents/execution-engine.js +0 -179
- package/dist/agents/execution-engine.js.map +0 -1
- package/dist/agents/runner.d.ts +0 -38
- package/dist/agents/runner.d.ts.map +0 -1
- package/dist/agents/runner.js +0 -375
- package/dist/agents/runner.js.map +0 -1
- package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
- package/dist/frontend/assets/index-W_Sfmu8j.js +0 -13
package/dist/frontend/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Action Llama</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DKQX_6iM.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BO_q8PRQ.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body class="bg-white dark:bg-slate-950 text-slate-800 dark:text-slate-200 min-h-screen">
|
|
11
11
|
<div id="root"></div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Hono } from "hono";
|
|
2
|
+
import type { Logger } from "../shared/logger.js";
|
|
3
|
+
export declare const MIME_TYPES: Record<string, string>;
|
|
4
|
+
/**
|
|
5
|
+
* Attempt to resolve the @action-llama/frontend dist directory.
|
|
6
|
+
* Checks (in order):
|
|
7
|
+
* 1. Bundled frontend at dist/frontend/ (works after npm install)
|
|
8
|
+
* 2. Workspace-linked @action-llama/frontend package (works in monorepo)
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveFrontendDist(): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Register all frontend SPA serving routes:
|
|
13
|
+
* - /assets/* — Vite-built assets with long-term caching headers
|
|
14
|
+
* - SPA fallback routes for /login, /dashboard, /triggers, /chat
|
|
15
|
+
*
|
|
16
|
+
* Reads index.html once and reuses it for all SPA routes, eliminating
|
|
17
|
+
* the previous duplication where it was read separately for dashboard and chat.
|
|
18
|
+
*/
|
|
19
|
+
export declare function registerSpaRoutes(app: Hono, frontendDist: string, logger: Logger): void;
|
|
20
|
+
//# sourceMappingURL=frontend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../src/gateway/frontend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAY7C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAkBnD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA4BvF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createRequire } from "module";
|
|
2
|
+
import { dirname, resolve, extname } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { existsSync, readFileSync } from "fs";
|
|
5
|
+
export const MIME_TYPES = {
|
|
6
|
+
".html": "text/html; charset=utf-8",
|
|
7
|
+
".js": "text/javascript; charset=utf-8",
|
|
8
|
+
".css": "text/css; charset=utf-8",
|
|
9
|
+
".json": "application/json",
|
|
10
|
+
".svg": "image/svg+xml",
|
|
11
|
+
".png": "image/png",
|
|
12
|
+
".ico": "image/x-icon",
|
|
13
|
+
".woff2": "font/woff2",
|
|
14
|
+
".woff": "font/woff",
|
|
15
|
+
".ttf": "font/ttf",
|
|
16
|
+
".map": "application/json",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Attempt to resolve the @action-llama/frontend dist directory.
|
|
20
|
+
* Checks (in order):
|
|
21
|
+
* 1. Bundled frontend at dist/frontend/ (works after npm install)
|
|
22
|
+
* 2. Workspace-linked @action-llama/frontend package (works in monorepo)
|
|
23
|
+
*/
|
|
24
|
+
export function resolveFrontendDist() {
|
|
25
|
+
// Check bundled frontend (copied during build:assets)
|
|
26
|
+
const bundled = resolve(dirname(fileURLToPath(import.meta.url)), "..", "frontend");
|
|
27
|
+
if (existsSync(resolve(bundled, "index.html"))) {
|
|
28
|
+
return bundled;
|
|
29
|
+
}
|
|
30
|
+
// Fall back to workspace-linked package
|
|
31
|
+
try {
|
|
32
|
+
const require = createRequire(import.meta.url);
|
|
33
|
+
const pkgPath = require.resolve("@action-llama/frontend/package.json");
|
|
34
|
+
const distDir = resolve(dirname(pkgPath), "dist");
|
|
35
|
+
if (existsSync(resolve(distDir, "index.html"))) {
|
|
36
|
+
return distDir;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Package not available
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Register all frontend SPA serving routes:
|
|
46
|
+
* - /assets/* — Vite-built assets with long-term caching headers
|
|
47
|
+
* - SPA fallback routes for /login, /dashboard, /triggers, /chat
|
|
48
|
+
*
|
|
49
|
+
* Reads index.html once and reuses it for all SPA routes, eliminating
|
|
50
|
+
* the previous duplication where it was read separately for dashboard and chat.
|
|
51
|
+
*/
|
|
52
|
+
export function registerSpaRoutes(app, frontendDist, logger) {
|
|
53
|
+
const indexHtml = readFileSync(resolve(frontendDist, "index.html"), "utf-8");
|
|
54
|
+
logger.info({ path: frontendDist }, "Serving frontend from @action-llama/frontend");
|
|
55
|
+
// Serve Vite-built assets (JS, CSS, images) with long-term caching
|
|
56
|
+
app.get("/assets/*", (c) => {
|
|
57
|
+
const filePath = resolve(frontendDist, c.req.path.slice(1));
|
|
58
|
+
if (!filePath.startsWith(frontendDist + "/"))
|
|
59
|
+
return c.notFound();
|
|
60
|
+
try {
|
|
61
|
+
const content = readFileSync(filePath);
|
|
62
|
+
const mime = MIME_TYPES[extname(filePath)] || "application/octet-stream";
|
|
63
|
+
return new Response(content, {
|
|
64
|
+
headers: { "Content-Type": mime, "Cache-Control": "public, max-age=31536000, immutable" },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return c.notFound();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
// SPA fallback routes — all serve index.html for client-side routing
|
|
72
|
+
app.get("/login", (c) => c.html(indexHtml));
|
|
73
|
+
app.get("/dashboard", (c) => c.html(indexHtml));
|
|
74
|
+
app.get("/dashboard/*", (c) => c.html(indexHtml));
|
|
75
|
+
app.get("/triggers", (c) => c.html(indexHtml));
|
|
76
|
+
app.get("/jobs", (c) => c.html(indexHtml));
|
|
77
|
+
app.get("/chat", (c) => c.html(indexHtml));
|
|
78
|
+
app.get("/chat/*", (c) => c.html(indexHtml));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=frontend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../src/gateway/frontend.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway/index.d.ts
CHANGED
|
@@ -1,72 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { LockStore } from "../execution/lock-store.js";
|
|
5
|
-
import { CallStore } from "../execution/call-store.js";
|
|
6
|
-
import { ContainerRegistry } from "../execution/container-registry.js";
|
|
7
|
-
import type { ContainerRegistration } from "../execution/types.js";
|
|
8
|
-
import type { StateStore } from "../shared/state-store.js";
|
|
9
|
-
import type { WebhookRegistry } from "../webhooks/registry.js";
|
|
10
|
-
import type { Logger } from "../shared/logger.js";
|
|
11
|
-
import type { StatusTracker } from "../tui/status-tracker.js";
|
|
12
|
-
import type { WebhookSourceConfig } from "../shared/config.js";
|
|
13
|
-
import type { ControlRoutesDeps } from "../control/routes/control.js";
|
|
14
|
-
import { type ApiKeySource } from "../control/auth.js";
|
|
15
|
-
import type { SchedulerEventBus } from "../scheduler/events.js";
|
|
16
|
-
import type { StatsStore } from "../stats/store.js";
|
|
17
|
-
import { ChatSessionManager } from "../chat/session-manager.js";
|
|
18
|
-
import { type ChatWebSocketState } from "../chat/ws-handler.js";
|
|
19
|
-
import { type LaunchChatCallback, type StopChatCallback } from "../chat/routes.js";
|
|
20
|
-
/**
|
|
21
|
-
* Attempt to resolve the @action-llama/frontend dist directory.
|
|
22
|
-
* Checks (in order):
|
|
23
|
-
* 1. Bundled frontend at dist/frontend/ (works after npm install)
|
|
24
|
-
* 2. Workspace-linked @action-llama/frontend package (works in monorepo)
|
|
25
|
-
*/
|
|
26
|
-
export declare function resolveFrontendDist(): string | null;
|
|
27
|
-
export type { ContainerRegistration } from "../execution/types.js";
|
|
28
|
-
export interface GatewayOptions {
|
|
29
|
-
port: number;
|
|
30
|
-
hostname?: string;
|
|
31
|
-
logger: Logger;
|
|
32
|
-
killContainer?: (name: string) => Promise<void>;
|
|
33
|
-
webhookRegistry?: WebhookRegistry;
|
|
34
|
-
webhookSecrets?: Record<string, Record<string, string>>;
|
|
35
|
-
webhookConfigs?: Record<string, WebhookSourceConfig>;
|
|
36
|
-
statusTracker?: StatusTracker;
|
|
37
|
-
projectPath?: string;
|
|
38
|
-
webUI?: boolean;
|
|
39
|
-
lockTimeout?: number;
|
|
40
|
-
signalContext?: SignalContext;
|
|
41
|
-
controlDeps?: ControlRoutesDeps;
|
|
42
|
-
/** Static API key string or an async provider that re-reads the key from disk on every auth check, enabling hot-reload of rotated credentials. */
|
|
43
|
-
apiKey?: ApiKeySource;
|
|
44
|
-
stateStore?: StateStore;
|
|
45
|
-
skipStatusEndpoint?: boolean;
|
|
46
|
-
/** Optional path to the pre-built frontend dist directory (overrides resolveFrontendDist; useful for testing). */
|
|
47
|
-
frontendDistPath?: string;
|
|
48
|
-
/** Optional event bus for lifecycle instrumentation. */
|
|
49
|
-
events?: SchedulerEventBus;
|
|
50
|
-
/** Optional stats store for dashboard aggregate stats. */
|
|
51
|
-
statsStore?: StatsStore;
|
|
52
|
-
/** Max concurrent chat sessions (default: 5). */
|
|
53
|
-
maxChatSessions?: number;
|
|
54
|
-
/** Callback to launch a chat container for a session. */
|
|
55
|
-
launchChatContainer?: LaunchChatCallback;
|
|
56
|
-
/** Callback to stop a chat container for a session. */
|
|
57
|
-
stopChatContainer?: StopChatCallback;
|
|
58
|
-
}
|
|
59
|
-
export interface GatewayServer {
|
|
60
|
-
server: Server;
|
|
61
|
-
containerRegistry: ContainerRegistry;
|
|
62
|
-
registerContainer: (secret: string, reg: ContainerRegistration) => Promise<void>;
|
|
63
|
-
unregisterContainer: (secret: string) => Promise<void>;
|
|
64
|
-
lockStore: LockStore;
|
|
65
|
-
callStore: CallStore;
|
|
66
|
-
setCallDispatcher: (dispatcher: CallDispatcher) => void;
|
|
67
|
-
close: () => Promise<void>;
|
|
68
|
-
chatSessionManager?: ChatSessionManager;
|
|
69
|
-
chatWebSocketState?: ChatWebSocketState;
|
|
70
|
-
}
|
|
1
|
+
export type { GatewayOptions, GatewayServer, ContainerRegistration } from "./types.js";
|
|
2
|
+
export { resolveFrontendDist } from "./frontend.js";
|
|
3
|
+
import type { GatewayOptions, GatewayServer } from "./types.js";
|
|
71
4
|
export declare function startGateway(opts: GatewayOptions): Promise<GatewayServer>;
|
|
72
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgBhE,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA2K/E"}
|
package/dist/gateway/index.js
CHANGED
|
@@ -1,242 +1,126 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
2
|
import { serve } from "@hono/node-server";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { LockStore } from "../execution/lock-store.js";
|
|
15
|
-
import { CallStore } from "../execution/call-store.js";
|
|
16
|
-
import { ContainerRegistry } from "../execution/container-registry.js";
|
|
17
|
-
import { SessionStore } from "../control/session-store.js";
|
|
18
|
-
import { withSpan, getTelemetry } from "../telemetry/index.js";
|
|
19
|
-
import { SpanKind } from "@opentelemetry/api";
|
|
20
|
-
import { authMiddleware } from "../control/auth.js";
|
|
21
|
-
import { ChatSessionManager } from "../chat/session-manager.js";
|
|
22
|
-
import { attachChatWebSocket } from "../chat/ws-handler.js";
|
|
23
|
-
import { registerChatApiRoutes } from "../chat/routes.js";
|
|
24
|
-
const MIME_TYPES = {
|
|
25
|
-
".html": "text/html; charset=utf-8",
|
|
26
|
-
".js": "text/javascript; charset=utf-8",
|
|
27
|
-
".css": "text/css; charset=utf-8",
|
|
28
|
-
".json": "application/json",
|
|
29
|
-
".svg": "image/svg+xml",
|
|
30
|
-
".png": "image/png",
|
|
31
|
-
".ico": "image/x-icon",
|
|
32
|
-
".woff2": "font/woff2",
|
|
33
|
-
".woff": "font/woff",
|
|
34
|
-
".ttf": "font/ttf",
|
|
35
|
-
".map": "application/json",
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Attempt to resolve the @action-llama/frontend dist directory.
|
|
39
|
-
* Checks (in order):
|
|
40
|
-
* 1. Bundled frontend at dist/frontend/ (works after npm install)
|
|
41
|
-
* 2. Workspace-linked @action-llama/frontend package (works in monorepo)
|
|
42
|
-
*/
|
|
43
|
-
export function resolveFrontendDist() {
|
|
44
|
-
// Check bundled frontend (copied during build:assets)
|
|
45
|
-
const bundled = resolve(dirname(fileURLToPath(import.meta.url)), "..", "frontend");
|
|
46
|
-
if (existsSync(resolve(bundled, "index.html"))) {
|
|
47
|
-
return bundled;
|
|
48
|
-
}
|
|
49
|
-
// Fall back to workspace-linked package
|
|
50
|
-
try {
|
|
51
|
-
const require = createRequire(import.meta.url);
|
|
52
|
-
const pkgPath = require.resolve("@action-llama/frontend/package.json");
|
|
53
|
-
const distDir = resolve(dirname(pkgPath), "dist");
|
|
54
|
-
if (existsSync(resolve(distDir, "index.html"))) {
|
|
55
|
-
return distDir;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Package not available
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
3
|
+
export { resolveFrontendDist } from "./frontend.js";
|
|
4
|
+
import { createGatewayStores } from "./stores.js";
|
|
5
|
+
import { applyTelemetryMiddleware } from "./middleware/telemetry.js";
|
|
6
|
+
import { applyRequestLoggingMiddleware } from "./middleware/request-logging.js";
|
|
7
|
+
import { applyAuthMiddleware } from "./middleware/auth.js";
|
|
8
|
+
import { registerSystemRoutes } from "./routes/system.js";
|
|
9
|
+
import { registerExecutionRoutes } from "./routes/execution.js";
|
|
10
|
+
import { registerGatewayWebhookRoutes } from "./routes/webhooks.js";
|
|
11
|
+
import { registerDashboardRoutes } from "./routes/dashboard.js";
|
|
12
|
+
import { registerChatRoutes, attachChatWebSocketToServer } from "./routes/chat.js";
|
|
13
|
+
import { resolveFrontendDist, registerSpaRoutes } from "./frontend.js";
|
|
63
14
|
export async function startGateway(opts) {
|
|
64
|
-
const { port, logger, killContainer, webhookRegistry, webhookSecrets, statusTracker, projectPath, webUI, lockTimeout, signalContext, stateStore } = opts;
|
|
65
15
|
const app = new Hono();
|
|
66
|
-
// Create stores backed by the persistent StateStore (if provided).
|
|
67
|
-
const containerRegistry = new ContainerRegistry(stateStore);
|
|
68
|
-
const lockStore = new LockStore(lockTimeout, undefined, stateStore, {
|
|
69
|
-
isHolderAlive: (holder) => containerRegistry.hasInstance(holder),
|
|
70
|
-
});
|
|
71
|
-
const callStore = new CallStore(undefined, stateStore);
|
|
72
16
|
let callDispatcher;
|
|
73
|
-
//
|
|
74
|
-
await
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// Add telemetry middleware for HTTP requests
|
|
78
|
-
const telemetry = getTelemetry();
|
|
79
|
-
if (telemetry) {
|
|
80
|
-
app.use("*", async (c, next) => {
|
|
81
|
-
const spanName = `gateway.${c.req.method.toLowerCase()}_${c.req.path.replace(/\/+/g, "_").replace(/^_|_$/g, "") || "root"}`;
|
|
82
|
-
await withSpan(spanName, async (span) => {
|
|
83
|
-
span.setAttributes({
|
|
84
|
-
"http.method": c.req.method,
|
|
85
|
-
"http.url": c.req.url,
|
|
86
|
-
"http.path": c.req.path,
|
|
87
|
-
"http.user_agent": c.req.header("user-agent") || "",
|
|
88
|
-
"gateway.component": "http_server",
|
|
89
|
-
});
|
|
90
|
-
await next();
|
|
91
|
-
span.setAttributes({
|
|
92
|
-
"http.status_code": c.res.status,
|
|
93
|
-
});
|
|
94
|
-
}, {}, SpanKind.SERVER);
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
// Request/response logging middleware for command routes.
|
|
98
|
-
// Skips /health to avoid noise; logs method, path, status, and duration.
|
|
99
|
-
app.use("*", async (c, next) => {
|
|
100
|
-
if (c.req.path === "/health") {
|
|
101
|
-
await next();
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
const start = Date.now();
|
|
105
|
-
logger.debug({ method: c.req.method, path: c.req.path }, "request received");
|
|
106
|
-
await next();
|
|
107
|
-
const duration = Date.now() - start;
|
|
108
|
-
const status = c.res.status;
|
|
109
|
-
const logData = { method: c.req.method, path: c.req.path, status, duration };
|
|
110
|
-
if (status >= 400) {
|
|
111
|
-
logger.warn(logData, "request completed with error");
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
logger.debug(logData, "request completed");
|
|
115
|
-
}
|
|
17
|
+
// 1. Create and hydrate stores
|
|
18
|
+
const { containerRegistry, lockStore, callStore, sessionStore } = await createGatewayStores({
|
|
19
|
+
lockTimeout: opts.lockTimeout,
|
|
20
|
+
stateStore: opts.stateStore,
|
|
116
21
|
});
|
|
117
|
-
//
|
|
118
|
-
app
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
registerShutdownRoute(app, containerRegistry, killFn, logger);
|
|
122
|
-
// Apply auth middleware to protected routes when an API key is configured
|
|
22
|
+
// 2. Apply middleware (order matters: telemetry → logging)
|
|
23
|
+
applyTelemetryMiddleware(app);
|
|
24
|
+
applyRequestLoggingMiddleware(app, opts.logger);
|
|
25
|
+
// 3. Apply auth (if API key configured)
|
|
123
26
|
if (opts.apiKey) {
|
|
124
|
-
|
|
125
|
-
const auth = authMiddleware(opts.apiKey, sessionStore);
|
|
126
|
-
app.use("/control/*", auth);
|
|
127
|
-
app.use("/dashboard/api/*", auth);
|
|
128
|
-
app.use("/locks/status", auth);
|
|
129
|
-
app.use("/api/logs/*", auth);
|
|
130
|
-
app.use("/api/stats/*", auth);
|
|
131
|
-
app.use("/api/dashboard/*", auth);
|
|
132
|
-
app.use("/api/auth/check", auth);
|
|
133
|
-
app.use("/api/webhooks/*", auth);
|
|
134
|
-
// JSON auth endpoints for the SPA (login is unprotected, check is protected)
|
|
135
|
-
registerAuthApiRoutes(app, opts.apiKey, sessionStore, opts.hostname);
|
|
27
|
+
applyAuthMiddleware(app, opts.apiKey, sessionStore, opts.hostname);
|
|
136
28
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
29
|
+
// 4. Register system routes (health, shutdown, control)
|
|
30
|
+
registerSystemRoutes(app, {
|
|
31
|
+
containerRegistry,
|
|
32
|
+
killContainer: opts.killContainer,
|
|
33
|
+
logger: opts.logger,
|
|
34
|
+
controlDeps: opts.controlDeps,
|
|
35
|
+
});
|
|
36
|
+
// 5. Register execution routes (locks, calls, signals)
|
|
37
|
+
registerExecutionRoutes(app, {
|
|
38
|
+
containerRegistry,
|
|
39
|
+
lockStore,
|
|
40
|
+
callStore,
|
|
41
|
+
callDispatcherProvider: () => callDispatcher,
|
|
42
|
+
logger: opts.logger,
|
|
43
|
+
statusTracker: opts.statusTracker,
|
|
44
|
+
signalContext: opts.signalContext,
|
|
45
|
+
skipStatusEndpoint: opts.skipStatusEndpoint,
|
|
46
|
+
events: opts.events,
|
|
47
|
+
});
|
|
48
|
+
// 6. Register webhook routes
|
|
49
|
+
if (opts.webhookRegistry) {
|
|
50
|
+
registerGatewayWebhookRoutes(app, {
|
|
51
|
+
webhookRegistry: opts.webhookRegistry,
|
|
52
|
+
webhookSecrets: opts.webhookSecrets || {},
|
|
53
|
+
webhookConfigs: opts.webhookConfigs || {},
|
|
54
|
+
logger: opts.logger,
|
|
55
|
+
statusTracker: opts.statusTracker,
|
|
56
|
+
statsStore: opts.statsStore,
|
|
57
|
+
});
|
|
144
58
|
}
|
|
145
|
-
// Dashboard routes
|
|
146
|
-
if (webUI && statusTracker) {
|
|
59
|
+
// 7. Dashboard routes (requires webUI + statusTracker + apiKey)
|
|
60
|
+
if (opts.webUI && opts.statusTracker) {
|
|
147
61
|
if (!opts.apiKey) {
|
|
148
|
-
logger.error("Dashboard UI requested but no API key configured. Dashboard will not be enabled for security.");
|
|
62
|
+
opts.logger.error("Dashboard UI requested but no API key configured. Dashboard will not be enabled for security.");
|
|
149
63
|
}
|
|
150
64
|
else {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
logger.info({ path: frontendDist }, "Serving frontend from @action-llama/frontend");
|
|
159
|
-
const indexHtml = readFileSync(resolve(frontendDist, "index.html"), "utf-8");
|
|
160
|
-
// Serve Vite-built assets (JS, CSS, images) with long-term caching
|
|
161
|
-
app.get("/assets/*", (c) => {
|
|
162
|
-
const filePath = resolve(frontendDist, c.req.path.slice(1));
|
|
163
|
-
if (!filePath.startsWith(frontendDist + "/"))
|
|
164
|
-
return c.notFound();
|
|
165
|
-
try {
|
|
166
|
-
const content = readFileSync(filePath);
|
|
167
|
-
const mime = MIME_TYPES[extname(filePath)] || "application/octet-stream";
|
|
168
|
-
return new Response(content, {
|
|
169
|
-
headers: { "Content-Type": mime, "Cache-Control": "public, max-age=31536000, immutable" },
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
return c.notFound();
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
// SPA fallback: serve index.html for all frontend routes
|
|
177
|
-
app.get("/login", (c) => c.html(indexHtml));
|
|
178
|
-
app.get("/dashboard", (c) => c.html(indexHtml));
|
|
179
|
-
app.get("/dashboard/*", (c) => c.html(indexHtml));
|
|
180
|
-
app.get("/triggers", (c) => c.html(indexHtml));
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
logger.warn("@action-llama/frontend not found — dashboard UI will not be served. API routes are still available.");
|
|
184
|
-
}
|
|
185
|
-
app.get("/", (c) => c.redirect("/dashboard"));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// Chat WebSocket and API routes
|
|
189
|
-
let chatSessionManager;
|
|
190
|
-
let chatWsState;
|
|
191
|
-
if (webUI && opts.apiKey) {
|
|
192
|
-
chatSessionManager = new ChatSessionManager(opts.maxChatSessions);
|
|
193
|
-
const noopLaunch = async () => { };
|
|
194
|
-
const noopStop = async () => { };
|
|
195
|
-
// Apply auth middleware to chat API routes
|
|
196
|
-
const sessionStore = stateStore ? new SessionStore(stateStore) : undefined;
|
|
197
|
-
const chatAuth = authMiddleware(opts.apiKey, sessionStore);
|
|
198
|
-
app.use("/api/chat/*", chatAuth);
|
|
199
|
-
registerChatApiRoutes(app, chatSessionManager, opts.launchChatContainer || noopLaunch, opts.stopChatContainer || noopStop, logger);
|
|
200
|
-
// SPA fallback for /chat/* routes
|
|
201
|
-
const frontendDist2 = opts.frontendDistPath ?? resolveFrontendDist();
|
|
202
|
-
if (frontendDist2) {
|
|
203
|
-
const indexHtml2 = readFileSync(resolve(frontendDist2, "index.html"), "utf-8");
|
|
204
|
-
app.get("/chat", (c) => c.html(indexHtml2));
|
|
205
|
-
app.get("/chat/*", (c) => c.html(indexHtml2));
|
|
65
|
+
await registerDashboardRoutes(app, {
|
|
66
|
+
statusTracker: opts.statusTracker,
|
|
67
|
+
projectPath: opts.projectPath,
|
|
68
|
+
apiKey: opts.apiKey,
|
|
69
|
+
statsStore: opts.statsStore,
|
|
70
|
+
logger: opts.logger,
|
|
71
|
+
});
|
|
206
72
|
}
|
|
207
73
|
}
|
|
208
|
-
|
|
209
|
-
|
|
74
|
+
else if (opts.projectPath && opts.apiKey) {
|
|
75
|
+
// Log + stats routes without dashboard UI (edge case: apiKey but no webUI)
|
|
210
76
|
const { registerLogRoutes } = await import("../control/routes/logs.js");
|
|
211
|
-
registerLogRoutes(app, projectPath);
|
|
212
|
-
}
|
|
213
|
-
else if (projectPath && !opts.apiKey) {
|
|
214
|
-
logger.warn("Log API routes disabled — gateway API key required for security.");
|
|
215
|
-
}
|
|
216
|
-
// Stats API routes — only register if auth is configured for security
|
|
217
|
-
if (opts.apiKey) {
|
|
77
|
+
registerLogRoutes(app, opts.projectPath);
|
|
218
78
|
const { registerStatsRoutes } = await import("../control/routes/stats.js");
|
|
219
79
|
registerStatsRoutes(app, opts.statsStore, opts.statusTracker);
|
|
220
80
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const { registerControlRoutes } = await import("../control/routes/control.js");
|
|
224
|
-
registerControlRoutes(app, opts.controlDeps);
|
|
81
|
+
else if (opts.projectPath && !opts.apiKey) {
|
|
82
|
+
opts.logger.warn("Log API routes disabled — gateway API key required for security.");
|
|
225
83
|
}
|
|
84
|
+
// 8. Chat routes (requires webUI + apiKey)
|
|
85
|
+
let chatSessionManager;
|
|
86
|
+
if (opts.webUI && opts.apiKey) {
|
|
87
|
+
const chatSetup = registerChatRoutes(app, {
|
|
88
|
+
maxChatSessions: opts.maxChatSessions,
|
|
89
|
+
launchChatContainer: opts.launchChatContainer,
|
|
90
|
+
stopChatContainer: opts.stopChatContainer,
|
|
91
|
+
logger: opts.logger,
|
|
92
|
+
});
|
|
93
|
+
chatSessionManager = chatSetup.chatSessionManager;
|
|
94
|
+
}
|
|
95
|
+
// 9. Frontend SPA serving (resolve once, serve everywhere)
|
|
96
|
+
const frontendDist = opts.frontendDistPath ?? resolveFrontendDist();
|
|
97
|
+
if (frontendDist && opts.webUI && opts.apiKey) {
|
|
98
|
+
registerSpaRoutes(app, frontendDist, opts.logger);
|
|
99
|
+
}
|
|
100
|
+
else if (opts.webUI && opts.apiKey && !frontendDist) {
|
|
101
|
+
opts.logger.warn("@action-llama/frontend not found — dashboard UI will not be served. API routes are still available.");
|
|
102
|
+
}
|
|
103
|
+
// 10. Start HTTP server
|
|
226
104
|
const server = serve({
|
|
227
105
|
fetch: app.fetch,
|
|
228
|
-
port,
|
|
106
|
+
port: opts.port,
|
|
229
107
|
hostname: opts.hostname || "127.0.0.1",
|
|
230
108
|
});
|
|
231
109
|
await new Promise((resolve) => {
|
|
232
110
|
server.on("listening", resolve);
|
|
233
111
|
});
|
|
234
|
-
// Attach chat WebSocket
|
|
112
|
+
// 11. Attach chat WebSocket to the raw HTTP server (needs live server)
|
|
113
|
+
let chatWsState;
|
|
235
114
|
if (chatSessionManager && opts.apiKey) {
|
|
236
|
-
|
|
237
|
-
|
|
115
|
+
chatWsState = attachChatWebSocketToServer(server, {
|
|
116
|
+
chatSessionManager,
|
|
117
|
+
apiKey: opts.apiKey,
|
|
118
|
+
sessionStore,
|
|
119
|
+
logger: opts.logger,
|
|
120
|
+
});
|
|
238
121
|
}
|
|
239
|
-
logger.info({ port }, "Gateway server listening");
|
|
122
|
+
opts.logger.info({ port: opts.port }, "Gateway server listening");
|
|
123
|
+
// Closures over local state for container/call management
|
|
240
124
|
const registerContainer = async (secret, reg) => {
|
|
241
125
|
await containerRegistry.register(secret, reg);
|
|
242
126
|
};
|
|
@@ -245,11 +129,11 @@ export async function startGateway(opts) {
|
|
|
245
129
|
if (reg) {
|
|
246
130
|
const released = lockStore.releaseAll(reg.instanceId);
|
|
247
131
|
if (released > 0) {
|
|
248
|
-
logger.info({ agent: reg.agentName, instance: reg.instanceId, released }, "released locks on container cleanup");
|
|
132
|
+
opts.logger.info({ agent: reg.agentName, instance: reg.instanceId, released }, "released locks on container cleanup");
|
|
249
133
|
}
|
|
250
134
|
const failedCalls = callStore.failAllByCaller(reg.instanceId);
|
|
251
135
|
if (failedCalls > 0) {
|
|
252
|
-
logger.info({ agent: reg.agentName, instance: reg.instanceId, failedCalls }, "failed pending calls on container cleanup");
|
|
136
|
+
opts.logger.info({ agent: reg.agentName, instance: reg.instanceId, failedCalls }, "failed pending calls on container cleanup");
|
|
253
137
|
}
|
|
254
138
|
}
|
|
255
139
|
await containerRegistry.unregister(secret);
|
|
@@ -265,6 +149,17 @@ export async function startGateway(opts) {
|
|
|
265
149
|
callStore.dispose();
|
|
266
150
|
server.close(() => resolve());
|
|
267
151
|
});
|
|
268
|
-
return {
|
|
152
|
+
return {
|
|
153
|
+
server,
|
|
154
|
+
containerRegistry,
|
|
155
|
+
registerContainer,
|
|
156
|
+
unregisterContainer,
|
|
157
|
+
lockStore,
|
|
158
|
+
callStore,
|
|
159
|
+
setCallDispatcher,
|
|
160
|
+
close,
|
|
161
|
+
chatSessionManager,
|
|
162
|
+
chatWebSocketState: chatWsState,
|
|
163
|
+
};
|
|
269
164
|
}
|
|
270
165
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hono } from "hono";
|
|
2
|
+
import { type ApiKeySource } from "../../control/auth.js";
|
|
3
|
+
import type { SessionStore } from "../../control/session-store.js";
|
|
4
|
+
/**
|
|
5
|
+
* Apply authentication middleware to all protected routes and register
|
|
6
|
+
* the auth API endpoints (login/logout/check).
|
|
7
|
+
*
|
|
8
|
+
* The SessionStore is passed in (created once in stores.ts) and shared
|
|
9
|
+
* between the auth middleware, chat auth, and chat WebSocket handler.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyAuthMiddleware(app: Hono, apiKey: ApiKeySource, sessionStore: SessionStore | undefined, hostname?: string): void;
|
|
12
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/gateway/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAgBN"}
|