@action-llama/action-llama 0.10.2 → 0.11.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 (257) hide show
  1. package/AGENTS.md +17 -6
  2. package/README.md +8 -4
  3. package/dist/agents/container-entry.d.ts.map +1 -1
  4. package/dist/agents/container-entry.js +37 -0
  5. package/dist/agents/container-entry.js.map +1 -1
  6. package/dist/agents/container-runner.d.ts +4 -0
  7. package/dist/agents/container-runner.d.ts.map +1 -1
  8. package/dist/agents/container-runner.js +82 -5
  9. package/dist/agents/container-runner.js.map +1 -1
  10. package/dist/agents/execution-engine.d.ts +2 -0
  11. package/dist/agents/execution-engine.d.ts.map +1 -1
  12. package/dist/agents/execution-engine.js +5 -1
  13. package/dist/agents/execution-engine.js.map +1 -1
  14. package/dist/agents/runner.d.ts +3 -0
  15. package/dist/agents/runner.d.ts.map +1 -1
  16. package/dist/agents/runner.js +45 -2
  17. package/dist/agents/runner.js.map +1 -1
  18. package/dist/cli/commands/chat.d.ts +5 -2
  19. package/dist/cli/commands/chat.d.ts.map +1 -1
  20. package/dist/cli/commands/chat.js +240 -23
  21. package/dist/cli/commands/chat.js.map +1 -1
  22. package/dist/cli/commands/cloud-deploy.d.ts.map +1 -1
  23. package/dist/cli/commands/cloud-deploy.js +5 -47
  24. package/dist/cli/commands/cloud-deploy.js.map +1 -1
  25. package/dist/cli/commands/cloud-setup.d.ts.map +1 -1
  26. package/dist/cli/commands/cloud-setup.js +20 -33
  27. package/dist/cli/commands/cloud-setup.js.map +1 -1
  28. package/dist/cli/commands/cloud-teardown.d.ts.map +1 -1
  29. package/dist/cli/commands/cloud-teardown.js +6 -126
  30. package/dist/cli/commands/cloud-teardown.js.map +1 -1
  31. package/dist/cli/commands/doctor.d.ts +0 -1
  32. package/dist/cli/commands/doctor.d.ts.map +1 -1
  33. package/dist/cli/commands/doctor.js +19 -14
  34. package/dist/cli/commands/doctor.js.map +1 -1
  35. package/dist/cli/commands/kill.d.ts +1 -1
  36. package/dist/cli/commands/kill.d.ts.map +1 -1
  37. package/dist/cli/commands/kill.js +17 -6
  38. package/dist/cli/commands/kill.js.map +1 -1
  39. package/dist/cli/commands/logs.d.ts.map +1 -1
  40. package/dist/cli/commands/logs.js +104 -58
  41. package/dist/cli/commands/logs.js.map +1 -1
  42. package/dist/cli/commands/pause.d.ts +1 -1
  43. package/dist/cli/commands/pause.d.ts.map +1 -1
  44. package/dist/cli/commands/pause.js +9 -6
  45. package/dist/cli/commands/pause.js.map +1 -1
  46. package/dist/cli/commands/resume.d.ts +1 -1
  47. package/dist/cli/commands/resume.d.ts.map +1 -1
  48. package/dist/cli/commands/resume.js +9 -6
  49. package/dist/cli/commands/resume.js.map +1 -1
  50. package/dist/cli/commands/run.d.ts.map +1 -1
  51. package/dist/cli/commands/run.js +12 -54
  52. package/dist/cli/commands/run.js.map +1 -1
  53. package/dist/cli/commands/status.d.ts.map +1 -1
  54. package/dist/cli/commands/status.js +22 -39
  55. package/dist/cli/commands/status.js.map +1 -1
  56. package/dist/cli/gateway-client.d.ts +12 -0
  57. package/dist/cli/gateway-client.d.ts.map +1 -0
  58. package/dist/cli/gateway-client.js +27 -0
  59. package/dist/cli/gateway-client.js.map +1 -0
  60. package/dist/cli/main.js +49 -14
  61. package/dist/cli/main.js.map +1 -1
  62. package/dist/{shared/aws-constants.d.ts → cloud/aws/constants.d.ts} +3 -34
  63. package/dist/cloud/aws/constants.d.ts.map +1 -0
  64. package/dist/{shared/aws-constants.js → cloud/aws/constants.js} +3 -34
  65. package/dist/cloud/aws/constants.js.map +1 -0
  66. package/dist/cloud/{deploy-apprunner.d.ts → aws/deploy.d.ts} +6 -6
  67. package/dist/cloud/aws/deploy.d.ts.map +1 -0
  68. package/dist/cloud/{deploy-apprunner.js → aws/deploy.js} +2 -2
  69. package/dist/cloud/aws/deploy.js.map +1 -0
  70. package/dist/cloud/aws/iam.d.ts +37 -0
  71. package/dist/cloud/aws/iam.d.ts.map +1 -0
  72. package/dist/{cli/commands/cloud-iam.js → cloud/aws/iam.js} +30 -179
  73. package/dist/cloud/aws/iam.js.map +1 -0
  74. package/dist/cloud/aws/provider.d.ts +69 -0
  75. package/dist/cloud/aws/provider.d.ts.map +1 -0
  76. package/dist/cloud/aws/provider.js +173 -0
  77. package/dist/cloud/aws/provider.js.map +1 -0
  78. package/dist/cloud/aws/provision.d.ts +9 -0
  79. package/dist/cloud/aws/provision.d.ts.map +1 -0
  80. package/dist/{cli/commands/cloud-setup-ecs.js → cloud/aws/provision.js} +10 -9
  81. package/dist/cloud/aws/provision.js.map +1 -0
  82. package/dist/cloud/aws/teardown.d.ts +15 -0
  83. package/dist/cloud/aws/teardown.d.ts.map +1 -0
  84. package/dist/cloud/aws/teardown.js +74 -0
  85. package/dist/cloud/aws/teardown.js.map +1 -0
  86. package/dist/cloud/gcp/constants.d.ts +16 -0
  87. package/dist/cloud/gcp/constants.d.ts.map +1 -0
  88. package/dist/cloud/gcp/constants.js +16 -0
  89. package/dist/cloud/gcp/constants.js.map +1 -0
  90. package/dist/cloud/{deploy-cloudrun.d.ts → gcp/deploy.d.ts} +6 -6
  91. package/dist/cloud/gcp/deploy.d.ts.map +1 -0
  92. package/dist/cloud/{deploy-cloudrun.js → gcp/deploy.js} +7 -7
  93. package/dist/cloud/gcp/deploy.js.map +1 -0
  94. package/dist/cloud/gcp/iam.d.ts +20 -0
  95. package/dist/cloud/gcp/iam.d.ts.map +1 -0
  96. package/dist/cloud/gcp/iam.js +179 -0
  97. package/dist/cloud/gcp/iam.js.map +1 -0
  98. package/dist/cloud/gcp/provider.d.ts +28 -0
  99. package/dist/cloud/gcp/provider.d.ts.map +1 -0
  100. package/dist/cloud/gcp/provider.js +84 -0
  101. package/dist/cloud/gcp/provider.js.map +1 -0
  102. package/dist/cloud/gcp/provision.d.ts +14 -0
  103. package/dist/cloud/gcp/provision.d.ts.map +1 -0
  104. package/dist/cloud/gcp/provision.js +37 -0
  105. package/dist/cloud/gcp/provision.js.map +1 -0
  106. package/dist/cloud/gcp/teardown.d.ts +12 -0
  107. package/dist/cloud/gcp/teardown.d.ts.map +1 -0
  108. package/dist/cloud/gcp/teardown.js +67 -0
  109. package/dist/cloud/gcp/teardown.js.map +1 -0
  110. package/dist/cloud/image-builder.d.ts.map +1 -1
  111. package/dist/cloud/image-builder.js +115 -18
  112. package/dist/cloud/image-builder.js.map +1 -1
  113. package/dist/cloud/provider.d.ts +57 -0
  114. package/dist/cloud/provider.d.ts.map +1 -0
  115. package/dist/cloud/provider.js +21 -0
  116. package/dist/cloud/provider.js.map +1 -0
  117. package/dist/cloud/scheduler-image.d.ts.map +1 -1
  118. package/dist/cloud/scheduler-image.js +16 -3
  119. package/dist/cloud/scheduler-image.js.map +1 -1
  120. package/dist/cloud/state.d.ts +17 -0
  121. package/dist/cloud/state.d.ts.map +1 -0
  122. package/dist/cloud/state.js +48 -0
  123. package/dist/cloud/state.js.map +1 -0
  124. package/dist/docker/aws-shared.d.ts +6 -4
  125. package/dist/docker/aws-shared.d.ts.map +1 -1
  126. package/dist/docker/aws-shared.js +405 -23
  127. package/dist/docker/aws-shared.js.map +1 -1
  128. package/dist/docker/cloud-run-runtime.d.ts.map +1 -1
  129. package/dist/docker/cloud-run-runtime.js +10 -9
  130. package/dist/docker/cloud-run-runtime.js.map +1 -1
  131. package/dist/docker/ecs-runtime.d.ts +3 -1
  132. package/dist/docker/ecs-runtime.d.ts.map +1 -1
  133. package/dist/docker/ecs-runtime.js +78 -29
  134. package/dist/docker/ecs-runtime.js.map +1 -1
  135. package/dist/docker/image.d.ts +7 -0
  136. package/dist/docker/image.d.ts.map +1 -1
  137. package/dist/docker/image.js +31 -4
  138. package/dist/docker/image.js.map +1 -1
  139. package/dist/docker/lambda-runtime.js +1 -1
  140. package/dist/docker/lambda-runtime.js.map +1 -1
  141. package/dist/docker/local-runtime.js +4 -4
  142. package/dist/docker/local-runtime.js.map +1 -1
  143. package/dist/docker/network.d.ts.map +1 -1
  144. package/dist/docker/network.js +2 -2
  145. package/dist/docker/network.js.map +1 -1
  146. package/dist/docker/runtime.d.ts +23 -0
  147. package/dist/docker/runtime.d.ts.map +1 -1
  148. package/dist/gateway/api-key.d.ts +10 -0
  149. package/dist/gateway/api-key.d.ts.map +1 -0
  150. package/dist/gateway/api-key.js +19 -0
  151. package/dist/gateway/api-key.js.map +1 -0
  152. package/dist/gateway/auth.d.ts +16 -0
  153. package/dist/gateway/auth.d.ts.map +1 -0
  154. package/dist/gateway/auth.js +60 -0
  155. package/dist/gateway/auth.js.map +1 -0
  156. package/dist/gateway/index.d.ts +1 -0
  157. package/dist/gateway/index.d.ts.map +1 -1
  158. package/dist/gateway/index.js +33 -2
  159. package/dist/gateway/index.js.map +1 -1
  160. package/dist/gateway/routes/control.d.ts +6 -0
  161. package/dist/gateway/routes/control.d.ts.map +1 -1
  162. package/dist/gateway/routes/control.js +117 -0
  163. package/dist/gateway/routes/control.js.map +1 -1
  164. package/dist/gateway/routes/dashboard.d.ts +1 -1
  165. package/dist/gateway/routes/dashboard.d.ts.map +1 -1
  166. package/dist/gateway/routes/dashboard.js +144 -53
  167. package/dist/gateway/routes/dashboard.js.map +1 -1
  168. package/dist/gateway/views/dashboard-page.d.ts.map +1 -1
  169. package/dist/gateway/views/dashboard-page.js +93 -20
  170. package/dist/gateway/views/dashboard-page.js.map +1 -1
  171. package/dist/gateway/views/login-page.d.ts +2 -0
  172. package/dist/gateway/views/login-page.d.ts.map +1 -0
  173. package/dist/gateway/views/login-page.js +54 -0
  174. package/dist/gateway/views/login-page.js.map +1 -0
  175. package/dist/scheduler/index.d.ts.map +1 -1
  176. package/dist/scheduler/index.js +154 -36
  177. package/dist/scheduler/index.js.map +1 -1
  178. package/dist/scheduler/runner-pool.d.ts +5 -0
  179. package/dist/scheduler/runner-pool.d.ts.map +1 -1
  180. package/dist/scheduler/runner-pool.js +14 -0
  181. package/dist/scheduler/runner-pool.js.map +1 -1
  182. package/dist/scheduler/runtime-factory.d.ts +2 -0
  183. package/dist/scheduler/runtime-factory.d.ts.map +1 -1
  184. package/dist/scheduler/runtime-factory.js +35 -65
  185. package/dist/scheduler/runtime-factory.js.map +1 -1
  186. package/dist/setup/scaffold.d.ts.map +1 -1
  187. package/dist/setup/scaffold.js +25 -0
  188. package/dist/setup/scaffold.js.map +1 -1
  189. package/dist/shared/asm-backend.d.ts.map +1 -1
  190. package/dist/shared/asm-backend.js +2 -2
  191. package/dist/shared/asm-backend.js.map +1 -1
  192. package/dist/shared/config.d.ts +28 -13
  193. package/dist/shared/config.d.ts.map +1 -1
  194. package/dist/shared/config.js +40 -4
  195. package/dist/shared/config.js.map +1 -1
  196. package/dist/shared/constants.d.ts +34 -0
  197. package/dist/shared/constants.d.ts.map +1 -0
  198. package/dist/shared/constants.js +34 -0
  199. package/dist/shared/constants.js.map +1 -0
  200. package/dist/shared/credential-backend.d.ts +1 -1
  201. package/dist/shared/filesystem-backend.d.ts +1 -1
  202. package/dist/shared/filesystem-backend.js +1 -1
  203. package/dist/shared/gsm-backend.d.ts.map +1 -1
  204. package/dist/shared/gsm-backend.js +2 -2
  205. package/dist/shared/gsm-backend.js.map +1 -1
  206. package/dist/shared/paths.d.ts +2 -0
  207. package/dist/shared/paths.d.ts.map +1 -1
  208. package/dist/shared/paths.js +3 -1
  209. package/dist/shared/paths.js.map +1 -1
  210. package/dist/shared/remote.d.ts +1 -0
  211. package/dist/shared/remote.d.ts.map +1 -1
  212. package/dist/shared/remote.js +4 -16
  213. package/dist/shared/remote.js.map +1 -1
  214. package/dist/shared/usage.d.ts +22 -0
  215. package/dist/shared/usage.d.ts.map +1 -0
  216. package/dist/shared/usage.js +43 -0
  217. package/dist/shared/usage.js.map +1 -0
  218. package/dist/telemetry/index.d.ts +57 -0
  219. package/dist/telemetry/index.d.ts.map +1 -0
  220. package/dist/telemetry/index.js +189 -0
  221. package/dist/telemetry/index.js.map +1 -0
  222. package/dist/telemetry/providers/otel.d.ts +15 -0
  223. package/dist/telemetry/providers/otel.d.ts.map +1 -0
  224. package/dist/telemetry/providers/otel.js +77 -0
  225. package/dist/telemetry/providers/otel.js.map +1 -0
  226. package/dist/telemetry/providers/xray.d.ts +13 -0
  227. package/dist/telemetry/providers/xray.d.ts.map +1 -0
  228. package/dist/telemetry/providers/xray.js +33 -0
  229. package/dist/telemetry/providers/xray.js.map +1 -0
  230. package/dist/telemetry/types.d.ts +59 -0
  231. package/dist/telemetry/types.d.ts.map +1 -0
  232. package/dist/telemetry/types.js +2 -0
  233. package/dist/telemetry/types.js.map +1 -0
  234. package/dist/tui/App.d.ts.map +1 -1
  235. package/dist/tui/App.js +2 -0
  236. package/dist/tui/App.js.map +1 -1
  237. package/dist/tui/plain-logger.d.ts.map +1 -1
  238. package/dist/tui/plain-logger.js +8 -2
  239. package/dist/tui/plain-logger.js.map +1 -1
  240. package/dist/tui/status-tracker.d.ts +4 -1
  241. package/dist/tui/status-tracker.d.ts.map +1 -1
  242. package/dist/tui/status-tracker.js +11 -1
  243. package/dist/tui/status-tracker.js.map +1 -1
  244. package/docker/adot-collector-config.yaml +57 -0
  245. package/package.json +9 -1
  246. package/dist/cli/commands/cloud-iam.d.ts +0 -17
  247. package/dist/cli/commands/cloud-iam.d.ts.map +0 -1
  248. package/dist/cli/commands/cloud-iam.js.map +0 -1
  249. package/dist/cli/commands/cloud-setup-ecs.d.ts +0 -9
  250. package/dist/cli/commands/cloud-setup-ecs.d.ts.map +0 -1
  251. package/dist/cli/commands/cloud-setup-ecs.js.map +0 -1
  252. package/dist/cloud/deploy-apprunner.d.ts.map +0 -1
  253. package/dist/cloud/deploy-apprunner.js.map +0 -1
  254. package/dist/cloud/deploy-cloudrun.d.ts.map +0 -1
  255. package/dist/cloud/deploy-cloudrun.js.map +0 -1
  256. package/dist/shared/aws-constants.d.ts.map +0 -1
  257. package/dist/shared/aws-constants.js.map +0 -1
@@ -47,6 +47,121 @@ export function registerControlRoutes(app, deps) {
47
47
  return c.json({ error: `Failed to resume scheduler: ${message}` }, 500);
48
48
  }
49
49
  });
50
+ // POST /control/trigger/:name - Trigger an agent run
51
+ app.post("/control/trigger/:name", async (c) => {
52
+ const name = c.req.param("name");
53
+ if (!deps.triggerAgent) {
54
+ return c.json({ error: "Trigger not available" }, 503);
55
+ }
56
+ try {
57
+ const success = await deps.triggerAgent(name);
58
+ if (success) {
59
+ return c.json({ success: true, message: `Agent ${name} triggered` });
60
+ }
61
+ else {
62
+ return c.json({ error: `Agent ${name} not found or all runners busy` }, 404);
63
+ }
64
+ }
65
+ catch (error) {
66
+ const message = error instanceof Error ? error.message : String(error);
67
+ return c.json({ error: `Failed to trigger agent: ${message}` }, 500);
68
+ }
69
+ });
70
+ // POST /control/agents/:name/enable - Enable an agent
71
+ app.post("/control/agents/:name/enable", async (c) => {
72
+ const name = c.req.param("name");
73
+ if (!deps.enableAgent) {
74
+ return c.json({ error: "Enable not available" }, 503);
75
+ }
76
+ try {
77
+ const success = await deps.enableAgent(name);
78
+ if (success) {
79
+ return c.json({ success: true, message: `Agent ${name} enabled` });
80
+ }
81
+ else {
82
+ return c.json({ error: `Agent ${name} not found` }, 404);
83
+ }
84
+ }
85
+ catch (error) {
86
+ const message = error instanceof Error ? error.message : String(error);
87
+ return c.json({ error: `Failed to enable agent: ${message}` }, 500);
88
+ }
89
+ });
90
+ // POST /control/agents/:name/disable - Disable an agent
91
+ app.post("/control/agents/:name/disable", async (c) => {
92
+ const name = c.req.param("name");
93
+ if (!deps.disableAgent) {
94
+ return c.json({ error: "Disable not available" }, 503);
95
+ }
96
+ try {
97
+ const success = await deps.disableAgent(name);
98
+ if (success) {
99
+ return c.json({ success: true, message: `Agent ${name} disabled` });
100
+ }
101
+ else {
102
+ return c.json({ error: `Agent ${name} not found` }, 404);
103
+ }
104
+ }
105
+ catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ return c.json({ error: `Failed to disable agent: ${message}` }, 500);
108
+ }
109
+ });
110
+ // POST /control/agents/:name/pause - Pause an agent (alias for disable)
111
+ app.post("/control/agents/:name/pause", async (c) => {
112
+ const name = c.req.param("name");
113
+ if (!deps.disableAgent) {
114
+ return c.json({ error: "Pause not available" }, 503);
115
+ }
116
+ try {
117
+ const success = await deps.disableAgent(name);
118
+ if (success) {
119
+ return c.json({ success: true, message: `Agent ${name} paused` });
120
+ }
121
+ else {
122
+ return c.json({ error: `Agent ${name} not found` }, 404);
123
+ }
124
+ }
125
+ catch (error) {
126
+ const message = error instanceof Error ? error.message : String(error);
127
+ return c.json({ error: `Failed to pause agent: ${message}` }, 500);
128
+ }
129
+ });
130
+ // POST /control/agents/:name/resume - Resume an agent (alias for enable)
131
+ app.post("/control/agents/:name/resume", async (c) => {
132
+ const name = c.req.param("name");
133
+ if (!deps.enableAgent) {
134
+ return c.json({ error: "Resume not available" }, 503);
135
+ }
136
+ try {
137
+ const success = await deps.enableAgent(name);
138
+ if (success) {
139
+ return c.json({ success: true, message: `Agent ${name} resumed` });
140
+ }
141
+ else {
142
+ return c.json({ error: `Agent ${name} not found` }, 404);
143
+ }
144
+ }
145
+ catch (error) {
146
+ const message = error instanceof Error ? error.message : String(error);
147
+ return c.json({ error: `Failed to resume agent: ${message}` }, 500);
148
+ }
149
+ });
150
+ // POST /control/agents/:name/kill - Kill all running instances of an agent
151
+ app.post("/control/agents/:name/kill", async (c) => {
152
+ const name = c.req.param("name");
153
+ try {
154
+ const result = await deps.killAgent(name);
155
+ if (result === null) {
156
+ return c.json({ error: `Agent ${name} not found` }, 404);
157
+ }
158
+ return c.json({ success: true, message: `Killed ${result.killed} instance(s) of ${name}`, killed: result.killed });
159
+ }
160
+ catch (error) {
161
+ const message = error instanceof Error ? error.message : String(error);
162
+ return c.json({ error: `Failed to kill agent: ${message}` }, 500);
163
+ }
164
+ });
50
165
  // GET /control/status - Get scheduler status
51
166
  app.get("/control/status", async (c) => {
52
167
  if (!statusTracker) {
@@ -54,9 +169,11 @@ export function registerControlRoutes(app, deps) {
54
169
  }
55
170
  const schedulerInfo = statusTracker.getSchedulerInfo();
56
171
  const instances = statusTracker.getInstances();
172
+ const agents = statusTracker.getAllAgents();
57
173
  return c.json({
58
174
  scheduler: schedulerInfo,
59
175
  instances,
176
+ agents,
60
177
  running: instances.length,
61
178
  });
62
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../src/gateway/routes/control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../src/gateway/routes/control.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { Hono } from "hono";
2
2
  import type { StatusTracker } from "../../tui/status-tracker.js";
3
- export declare function registerDashboardRoutes(app: Hono, statusTracker: StatusTracker, projectPath?: string): void;
3
+ export declare function registerDashboardRoutes(app: Hono, statusTracker: StatusTracker, projectPath?: string, apiKey?: string): void;
4
4
  //# sourceMappingURL=dashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/gateway/routes/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,MAAM,CAAC;AAIhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA8DjE,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAiJN"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/gateway/routes/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAMjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAuFjE,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAwNN"}
@@ -1,9 +1,10 @@
1
1
  import { streamSSE } from "hono/streaming";
2
2
  import { renderDashboardPage } from "../views/dashboard-page.js";
3
3
  import { renderLogsPage } from "../views/logs-page.js";
4
- import { readFileSync, readdirSync, statSync } from "fs";
4
+ import { renderLoginPage } from "../views/login-page.js";
5
+ import { safeCompare } from "../auth.js";
6
+ import { readdirSync, statSync } from "fs";
5
7
  import { resolve } from "path";
6
- import { timingSafeEqual } from "crypto";
7
8
  function logsDir(projectPath) {
8
9
  return resolve(projectPath, ".al", "logs");
9
10
  }
@@ -23,52 +24,100 @@ function findLogFiles(projectPath, agentName) {
23
24
  return [];
24
25
  }
25
26
  }
26
- function readLastNLines(filePath, n) {
27
+ /**
28
+ * Efficiently read the last N lines from a file using reverse reading.
29
+ * This is async to avoid blocking the event loop.
30
+ */
31
+ async function readLastNLines(filePath, n) {
27
32
  try {
28
- const content = readFileSync(filePath, "utf-8");
29
- const lines = content.split("\n").filter((l) => l.trim());
30
- return lines.slice(-n);
33
+ const { promises: fs } = await import("fs");
34
+ const stat = await fs.stat(filePath);
35
+ const fileSize = stat.size;
36
+ if (fileSize === 0)
37
+ return [];
38
+ const fd = await fs.open(filePath, 'r');
39
+ const lines = [];
40
+ let position = fileSize;
41
+ let buffer = Buffer.alloc(8192); // 8KB chunks
42
+ let remainder = '';
43
+ try {
44
+ while (lines.length < n && position > 0) {
45
+ // Calculate how much to read (up to buffer size, but not before start of file)
46
+ const chunkSize = Math.min(buffer.length, position);
47
+ position -= chunkSize;
48
+ // Read chunk from file
49
+ const { buffer: readBuffer } = await fd.read(buffer, 0, chunkSize, position);
50
+ const chunk = readBuffer.toString('utf-8', 0, chunkSize);
51
+ // Combine with any remainder from previous iteration and split by newlines
52
+ const text = chunk + remainder;
53
+ const parts = text.split('\n');
54
+ // The first part becomes the new remainder (since we're reading backwards)
55
+ remainder = parts[0];
56
+ // Add lines in reverse order (excluding the first part which is incomplete)
57
+ for (let i = parts.length - 1; i >= 1; i--) {
58
+ const line = parts[i];
59
+ if (line.trim()) { // Skip empty lines
60
+ lines.unshift(line);
61
+ if (lines.length >= n)
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ // Handle any remaining text if we've read the whole file
67
+ if (position === 0 && remainder.trim()) {
68
+ lines.unshift(remainder);
69
+ if (lines.length > n) {
70
+ lines.splice(0, lines.length - n);
71
+ }
72
+ }
73
+ }
74
+ finally {
75
+ await fd.close();
76
+ }
77
+ return lines.slice(-n); // Ensure we return exactly n lines (or fewer if file is smaller)
31
78
  }
32
79
  catch {
33
80
  return [];
34
81
  }
35
82
  }
36
- function safeCompare(a, b) {
37
- const bufA = Buffer.from(a);
38
- const bufB = Buffer.from(b);
39
- if (bufA.length !== bufB.length)
40
- return false;
41
- return timingSafeEqual(bufA, bufB);
42
- }
43
- function basicAuthMiddleware(secret) {
44
- return async (c, next) => {
45
- const header = c.req.header("Authorization");
46
- if (header && header.startsWith("Basic ")) {
47
- const decoded = Buffer.from(header.slice(6), "base64").toString("utf-8");
48
- const sep = decoded.indexOf(":");
49
- if (sep !== -1) {
50
- const password = decoded.slice(sep + 1);
51
- if (safeCompare(password, secret)) {
52
- await next();
53
- return;
54
- }
55
- }
56
- }
57
- c.header("WWW-Authenticate", 'Basic realm="Action Llama Dashboard"');
58
- return c.text("Unauthorized", 401);
59
- };
60
- }
61
- export function registerDashboardRoutes(app, statusTracker, projectPath) {
62
- // Apply basic auth if AL_DASHBOARD_SECRET is set
63
- const dashboardSecret = process.env.AL_DASHBOARD_SECRET;
64
- if (dashboardSecret) {
65
- app.use("/dashboard/*", basicAuthMiddleware(dashboardSecret));
66
- app.use("/dashboard", basicAuthMiddleware(dashboardSecret));
67
- }
68
- else {
69
- console.warn("[security] Dashboard is running without authentication. " +
70
- "Set AL_DASHBOARD_SECRET to require a password.");
83
+ export function registerDashboardRoutes(app, statusTracker, projectPath, apiKey) {
84
+ // Deprecation warning for old env var
85
+ if (process.env.AL_DASHBOARD_SECRET) {
86
+ console.warn("[deprecated] AL_DASHBOARD_SECRET is no longer used. " +
87
+ "The dashboard now uses the gateway API key from ~/.action-llama/credentials/gateway_api_key/default/key. " +
88
+ "Run 'al doctor' to set it up.");
71
89
  }
90
+ // --- Unprotected routes: login / logout ---
91
+ app.get("/login", (c) => {
92
+ return c.html(renderLoginPage());
93
+ });
94
+ app.post("/login", async (c) => {
95
+ if (!apiKey) {
96
+ // No API key configured — skip auth
97
+ return c.redirect("/dashboard");
98
+ }
99
+ const body = await c.req.parseBody();
100
+ const key = typeof body["key"] === "string" ? body["key"] : "";
101
+ if (safeCompare(key, apiKey)) {
102
+ return c.html("", {
103
+ status: 302,
104
+ headers: {
105
+ Location: "/dashboard",
106
+ "Set-Cookie": `al_session=${apiKey}; HttpOnly; SameSite=Strict; Path=/`,
107
+ },
108
+ });
109
+ }
110
+ return c.html(renderLoginPage("Invalid API key"), 401);
111
+ });
112
+ app.post("/logout", (c) => {
113
+ return c.html("", {
114
+ status: 302,
115
+ headers: {
116
+ Location: "/login",
117
+ "Set-Cookie": "al_session=; HttpOnly; SameSite=Strict; Path=/; Max-Age=0",
118
+ },
119
+ });
120
+ });
72
121
  // Main dashboard page
73
122
  app.get("/dashboard", (c) => {
74
123
  const agents = statusTracker.getAllAgents();
@@ -120,7 +169,7 @@ export function registerDashboardRoutes(app, statusTracker, projectPath) {
120
169
  const logFiles = findLogFiles(projectPath, agentName);
121
170
  if (logFiles.length > 0) {
122
171
  const lastFile = logFiles[logFiles.length - 1];
123
- const lines = readLastNLines(lastFile, 100);
172
+ const lines = await readLastNLines(lastFile, 100);
124
173
  if (lines.length > 0) {
125
174
  stream.writeSSE({ data: JSON.stringify({ lines }) });
126
175
  }
@@ -129,6 +178,8 @@ export function registerDashboardRoutes(app, statusTracker, projectPath) {
129
178
  // Track file position for tailing
130
179
  let fileSize = 0;
131
180
  let currentFile = "";
181
+ let watcher = null;
182
+ let fallbackPoll = null;
132
183
  if (projectPath) {
133
184
  const logFiles = findLogFiles(projectPath, agentName);
134
185
  if (logFiles.length > 0) {
@@ -141,8 +192,7 @@ export function registerDashboardRoutes(app, statusTracker, projectPath) {
141
192
  }
142
193
  }
143
194
  }
144
- // Poll for new file data
145
- const filePoll = setInterval(() => {
195
+ const readNewData = async () => {
146
196
  if (!projectPath)
147
197
  return;
148
198
  // Check if a new log file appeared
@@ -151,25 +201,63 @@ export function registerDashboardRoutes(app, statusTracker, projectPath) {
151
201
  return;
152
202
  const latestFile = logFiles[logFiles.length - 1];
153
203
  if (latestFile !== currentFile) {
204
+ // Switch to new file and restart watching
205
+ if (watcher) {
206
+ watcher.close();
207
+ watcher = null;
208
+ }
154
209
  currentFile = latestFile;
155
210
  fileSize = 0;
211
+ // Start watching the new file
212
+ try {
213
+ const { watch } = await import("fs");
214
+ watcher = watch(currentFile, { persistent: false }, () => readNewData());
215
+ }
216
+ catch {
217
+ // fs.watch failed for new file, rely on fallback polling
218
+ }
156
219
  }
157
220
  try {
158
- const stat = statSync(currentFile);
221
+ const { promises: fs } = await import("fs");
222
+ const stat = await fs.stat(currentFile);
159
223
  if (stat.size > fileSize) {
160
- const fd = readFileSync(currentFile, "utf-8");
161
- const newContent = fd.slice(fileSize);
162
- fileSize = stat.size;
163
- const newLines = newContent.split("\n").filter((l) => l.trim());
164
- for (const line of newLines) {
165
- stream.writeSSE({ data: JSON.stringify({ line }) });
224
+ const fd = await fs.open(currentFile, 'r');
225
+ try {
226
+ const buffer = Buffer.alloc(stat.size - fileSize);
227
+ await fd.read(buffer, 0, buffer.length, fileSize);
228
+ const newContent = buffer.toString('utf-8');
229
+ fileSize = stat.size;
230
+ const newLines = newContent.split("\n").filter((l) => l.trim());
231
+ for (const line of newLines) {
232
+ stream.writeSSE({ data: JSON.stringify({ line }) });
233
+ }
234
+ }
235
+ finally {
236
+ await fd.close();
166
237
  }
167
238
  }
168
239
  }
169
240
  catch {
170
241
  // File read error, skip
171
242
  }
172
- }, 500);
243
+ };
244
+ // Set up file watching with fallback polling
245
+ if (currentFile) {
246
+ try {
247
+ const { watch } = await import("fs");
248
+ watcher = watch(currentFile, { persistent: false }, () => readNewData());
249
+ // Still use a fallback poll but with longer interval since watch should catch most changes
250
+ fallbackPoll = setInterval(readNewData, 2000);
251
+ }
252
+ catch {
253
+ // fs.watch not available, use polling only
254
+ fallbackPoll = setInterval(readNewData, 500);
255
+ }
256
+ }
257
+ else {
258
+ // No current file, just poll for new files
259
+ fallbackPoll = setInterval(readNewData, 1000);
260
+ }
173
261
  // Also forward StatusTracker log lines for this agent
174
262
  const onUpdate = () => {
175
263
  // StatusTracker log lines are already sent via the file poll,
@@ -180,7 +268,10 @@ export function registerDashboardRoutes(app, statusTracker, projectPath) {
180
268
  stream.writeSSE({ event: "heartbeat", data: "" });
181
269
  }, 15000);
182
270
  stream.onAbort(() => {
183
- clearInterval(filePoll);
271
+ if (watcher)
272
+ watcher.close();
273
+ if (fallbackPoll)
274
+ clearInterval(fallbackPoll);
184
275
  clearInterval(heartbeat);
185
276
  });
186
277
  // Keep stream open
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/gateway/routes/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/gateway/routes/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAgB,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,SAAS,OAAO,CAAC,WAAmB;IAClC,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,eAAe,GAAG,yCAAyC,CAAC;AAElE,SAAS,YAAY,CAAC,WAAmB,EAAE,SAAiB;IAC1D,+CAA+C;IAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAClE,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,CAAS;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;QAC9C,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACxC,+EAA+E;gBAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACpD,QAAQ,IAAI,SAAS,CAAC;gBAEtB,uBAAuB;gBACvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAEzD,2EAA2E;gBAC3E,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE/B,2EAA2E;gBAC3E,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAErB,4EAA4E;gBAC5E,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB;wBACpC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACpB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;4BAAE,MAAM;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iEAAiE;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAS,EACT,aAA4B,EAC5B,WAAoB,EACpB,MAAe;IAEf,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CACV,sDAAsD;YACtD,2GAA2G;YAC3G,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,6CAA6C;IAE7C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,oCAAoC;YACpC,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;gBAChB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,QAAQ,EAAE,YAAY;oBACtB,YAAY,EAAE,cAAc,MAAM,qCAAqC;iBACxE;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;YAChB,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,2DAA2D;aAC1E;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,GAAG,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5C,OAAO,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,GAAG,EAAE;gBAChB,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBACnD,MAAM,CAAC,QAAQ,CAAC;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBAClE,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,qBAAqB;YACrB,IAAI,EAAE,CAAC;YAEP,qBAAqB;YACrB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAEjC,iDAAiD;YACjD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,wBAAwB;YACxB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7C,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,GAAG,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvC,OAAO,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,wCAAwC;YACxC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,OAAO,GAAkC,IAAI,CAAC;YAClD,IAAI,YAAY,GAA0B,IAAI,CAAC;YAE/C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC5C,IAAI,CAAC;wBACH,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,yBAAyB;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC,WAAW;oBAAE,OAAO;gBAEzB,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;oBAC/B,0CAA0C;oBAC1C,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,KAAK,EAAE,CAAC;wBAChB,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;oBACD,WAAW,GAAG,UAAU,CAAC;oBACzB,QAAQ,GAAG,CAAC,CAAC;oBAEb,8BAA8B;oBAC9B,IAAI,CAAC;wBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;wBACrC,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC3E,CAAC;oBAAC,MAAM,CAAC;wBACP,yDAAyD;oBAC3D,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACxC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;wBACzB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;wBAC3C,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;4BAClD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;4BAClD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;4BAC5C,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;4BACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;4BAChE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gCAC5B,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;4BACtD,CAAC;wBACH,CAAC;gCAAS,CAAC;4BACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;wBACnB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC,CAAC;YAEF,6CAA6C;YAC7C,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrC,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBACzE,2FAA2F;oBAC3F,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;oBAC3C,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;YAED,sDAAsD;YACtD,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,8DAA8D;gBAC9D,wEAAwE;gBACxE,uEAAuE;YACzE,CAAC,CAAC;YAEF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,IAAI,OAAO;oBAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,YAAY;oBAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC9C,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,mBAAmB;YACnB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-page.d.ts","sourceRoot":"","sources":["../../../src/gateway/views/dashboard-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAyEvF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CA8L7H"}
1
+ {"version":3,"file":"dashboard-page.d.ts","sourceRoot":"","sources":["../../../src/gateway/views/dashboard-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAuFvF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAyP7H"}