@action-llama/action-llama 0.3.0 → 0.4.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 (212) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -102
  3. package/dist/agents/container-entry.js +123 -17
  4. package/dist/agents/container-entry.js.map +1 -1
  5. package/dist/agents/container-runner.d.ts +10 -4
  6. package/dist/agents/container-runner.d.ts.map +1 -1
  7. package/dist/agents/container-runner.js +83 -105
  8. package/dist/agents/container-runner.js.map +1 -1
  9. package/dist/agents/prompt.d.ts +2 -0
  10. package/dist/agents/prompt.d.ts.map +1 -1
  11. package/dist/agents/prompt.js +12 -4
  12. package/dist/agents/prompt.js.map +1 -1
  13. package/dist/agents/runner.d.ts +10 -1
  14. package/dist/agents/runner.d.ts.map +1 -1
  15. package/dist/agents/runner.js +60 -8
  16. package/dist/agents/runner.js.map +1 -1
  17. package/dist/cli/commands/{setup.d.ts → cloud-setup.d.ts} +1 -1
  18. package/dist/cli/commands/cloud-setup.d.ts.map +1 -0
  19. package/dist/cli/commands/cloud-setup.js +565 -0
  20. package/dist/cli/commands/cloud-setup.js.map +1 -0
  21. package/dist/cli/commands/cloud-teardown.d.ts +6 -0
  22. package/dist/cli/commands/cloud-teardown.d.ts.map +1 -0
  23. package/dist/cli/commands/cloud-teardown.js +152 -0
  24. package/dist/cli/commands/cloud-teardown.js.map +1 -0
  25. package/dist/cli/commands/console.d.ts.map +1 -1
  26. package/dist/cli/commands/console.js +108 -8
  27. package/dist/cli/commands/console.js.map +1 -1
  28. package/dist/cli/commands/creds.d.ts +2 -0
  29. package/dist/cli/commands/creds.d.ts.map +1 -0
  30. package/dist/cli/commands/creds.js +62 -0
  31. package/dist/cli/commands/creds.js.map +1 -0
  32. package/dist/cli/commands/doctor.d.ts +7 -0
  33. package/dist/cli/commands/doctor.d.ts.map +1 -0
  34. package/dist/cli/commands/doctor.js +405 -0
  35. package/dist/cli/commands/doctor.js.map +1 -0
  36. package/dist/cli/commands/logs.d.ts +1 -0
  37. package/dist/cli/commands/logs.d.ts.map +1 -1
  38. package/dist/cli/commands/logs.js +67 -0
  39. package/dist/cli/commands/logs.js.map +1 -1
  40. package/dist/cli/commands/new.d.ts.map +1 -1
  41. package/dist/cli/commands/new.js +9 -2
  42. package/dist/cli/commands/new.js.map +1 -1
  43. package/dist/cli/commands/run.d.ts +6 -0
  44. package/dist/cli/commands/run.d.ts.map +1 -0
  45. package/dist/cli/commands/run.js +121 -0
  46. package/dist/cli/commands/run.js.map +1 -0
  47. package/dist/cli/commands/start.d.ts +3 -1
  48. package/dist/cli/commands/start.d.ts.map +1 -1
  49. package/dist/cli/commands/start.js +52 -16
  50. package/dist/cli/commands/start.js.map +1 -1
  51. package/dist/cli/commands/status.d.ts +1 -0
  52. package/dist/cli/commands/status.d.ts.map +1 -1
  53. package/dist/cli/commands/status.js +39 -2
  54. package/dist/cli/commands/status.js.map +1 -1
  55. package/dist/cli/main.js +58 -16
  56. package/dist/cli/main.js.map +1 -1
  57. package/dist/credentials/builtins/aws.d.ts +4 -0
  58. package/dist/credentials/builtins/aws.d.ts.map +1 -0
  59. package/dist/credentials/builtins/aws.js +33 -0
  60. package/dist/credentials/builtins/aws.js.map +1 -0
  61. package/dist/credentials/builtins/bugsnag-token.d.ts +4 -0
  62. package/dist/credentials/builtins/bugsnag-token.d.ts.map +1 -0
  63. package/dist/credentials/builtins/bugsnag-token.js +18 -0
  64. package/dist/credentials/builtins/bugsnag-token.js.map +1 -0
  65. package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -1
  66. package/dist/credentials/builtins/github-webhook-secret.js +2 -1
  67. package/dist/credentials/builtins/github-webhook-secret.js.map +1 -1
  68. package/dist/credentials/builtins/index.d.ts.map +1 -1
  69. package/dist/credentials/builtins/index.js +10 -0
  70. package/dist/credentials/builtins/index.js.map +1 -1
  71. package/dist/credentials/builtins/netlify-token.d.ts +4 -0
  72. package/dist/credentials/builtins/netlify-token.d.ts.map +1 -0
  73. package/dist/credentials/builtins/netlify-token.js +18 -0
  74. package/dist/credentials/builtins/netlify-token.js.map +1 -0
  75. package/dist/credentials/builtins/openai-key.d.ts +4 -0
  76. package/dist/credentials/builtins/openai-key.d.ts.map +1 -0
  77. package/dist/credentials/builtins/openai-key.js +38 -0
  78. package/dist/credentials/builtins/openai-key.js.map +1 -0
  79. package/dist/credentials/builtins/x-twitter-api.d.ts +4 -0
  80. package/dist/credentials/builtins/x-twitter-api.d.ts.map +1 -0
  81. package/dist/credentials/builtins/x-twitter-api.js +28 -0
  82. package/dist/credentials/builtins/x-twitter-api.js.map +1 -0
  83. package/dist/credentials/prompter.d.ts.map +1 -1
  84. package/dist/credentials/prompter.js +8 -5
  85. package/dist/credentials/prompter.js.map +1 -1
  86. package/dist/docker/cloud-run-runtime.d.ts +61 -0
  87. package/dist/docker/cloud-run-runtime.d.ts.map +1 -0
  88. package/dist/docker/cloud-run-runtime.js +510 -0
  89. package/dist/docker/cloud-run-runtime.js.map +1 -0
  90. package/dist/docker/ecs-runtime.d.ts +73 -0
  91. package/dist/docker/ecs-runtime.d.ts.map +1 -0
  92. package/dist/docker/ecs-runtime.js +596 -0
  93. package/dist/docker/ecs-runtime.js.map +1 -0
  94. package/dist/docker/image.d.ts.map +1 -1
  95. package/dist/docker/image.js +3 -2
  96. package/dist/docker/image.js.map +1 -1
  97. package/dist/docker/local-runtime.d.ts +19 -0
  98. package/dist/docker/local-runtime.d.ts.map +1 -0
  99. package/dist/docker/local-runtime.js +209 -0
  100. package/dist/docker/local-runtime.js.map +1 -0
  101. package/dist/docker/network.d.ts +1 -1
  102. package/dist/docker/network.d.ts.map +1 -1
  103. package/dist/docker/network.js +2 -1
  104. package/dist/docker/network.js.map +1 -1
  105. package/dist/docker/runtime.d.ts +90 -0
  106. package/dist/docker/runtime.d.ts.map +1 -0
  107. package/dist/docker/runtime.js +2 -0
  108. package/dist/docker/runtime.js.map +1 -0
  109. package/dist/gateway/index.d.ts +8 -2
  110. package/dist/gateway/index.d.ts.map +1 -1
  111. package/dist/gateway/index.js +16 -8
  112. package/dist/gateway/index.js.map +1 -1
  113. package/dist/gateway/routes/credentials.d.ts +5 -0
  114. package/dist/gateway/routes/credentials.d.ts.map +1 -0
  115. package/dist/gateway/routes/credentials.js +17 -0
  116. package/dist/gateway/routes/credentials.js.map +1 -0
  117. package/dist/gateway/routes/logs.d.ts +5 -0
  118. package/dist/gateway/routes/logs.d.ts.map +1 -0
  119. package/dist/gateway/routes/logs.js +31 -0
  120. package/dist/gateway/routes/logs.js.map +1 -0
  121. package/dist/gateway/routes/shutdown.d.ts +2 -1
  122. package/dist/gateway/routes/shutdown.d.ts.map +1 -1
  123. package/dist/gateway/routes/shutdown.js +7 -16
  124. package/dist/gateway/routes/shutdown.js.map +1 -1
  125. package/dist/gateway/routes/webhooks.d.ts +2 -1
  126. package/dist/gateway/routes/webhooks.d.ts.map +1 -1
  127. package/dist/gateway/routes/webhooks.js +11 -4
  128. package/dist/gateway/routes/webhooks.js.map +1 -1
  129. package/dist/gateway/types.d.ts +6 -0
  130. package/dist/gateway/types.d.ts.map +1 -0
  131. package/dist/gateway/types.js +2 -0
  132. package/dist/gateway/types.js.map +1 -0
  133. package/dist/scheduler/index.d.ts +3 -2
  134. package/dist/scheduler/index.d.ts.map +1 -1
  135. package/dist/scheduler/index.js +286 -67
  136. package/dist/scheduler/index.js.map +1 -1
  137. package/dist/setup/scaffold.d.ts.map +1 -1
  138. package/dist/setup/scaffold.js +110 -50
  139. package/dist/setup/scaffold.js.map +1 -1
  140. package/dist/setup/validators.d.ts +14 -0
  141. package/dist/setup/validators.d.ts.map +1 -1
  142. package/dist/setup/validators.js +53 -0
  143. package/dist/setup/validators.js.map +1 -1
  144. package/dist/shared/asm-backend.d.ts +25 -0
  145. package/dist/shared/asm-backend.d.ts.map +1 -0
  146. package/dist/shared/asm-backend.js +107 -0
  147. package/dist/shared/asm-backend.js.map +1 -0
  148. package/dist/shared/aws-constants.d.ts +55 -0
  149. package/dist/shared/aws-constants.d.ts.map +1 -0
  150. package/dist/shared/aws-constants.js +55 -0
  151. package/dist/shared/aws-constants.js.map +1 -0
  152. package/dist/shared/config.d.ts +25 -5
  153. package/dist/shared/config.d.ts.map +1 -1
  154. package/dist/shared/config.js +15 -22
  155. package/dist/shared/config.js.map +1 -1
  156. package/dist/shared/credential-backend.d.ts +28 -0
  157. package/dist/shared/credential-backend.d.ts.map +1 -0
  158. package/dist/shared/credential-backend.js +2 -0
  159. package/dist/shared/credential-backend.js.map +1 -0
  160. package/dist/shared/credentials.d.ts +42 -4
  161. package/dist/shared/credentials.d.ts.map +1 -1
  162. package/dist/shared/credentials.js +83 -6
  163. package/dist/shared/credentials.js.map +1 -1
  164. package/dist/shared/filesystem-backend.d.ts +18 -0
  165. package/dist/shared/filesystem-backend.d.ts.map +1 -0
  166. package/dist/shared/filesystem-backend.js +86 -0
  167. package/dist/shared/filesystem-backend.js.map +1 -0
  168. package/dist/shared/gsm-backend.d.ts +35 -0
  169. package/dist/shared/gsm-backend.d.ts.map +1 -0
  170. package/dist/shared/gsm-backend.js +208 -0
  171. package/dist/shared/gsm-backend.js.map +1 -0
  172. package/dist/shared/remote.d.ts +11 -0
  173. package/dist/shared/remote.d.ts.map +1 -0
  174. package/dist/shared/remote.js +29 -0
  175. package/dist/shared/remote.js.map +1 -0
  176. package/dist/tui/App.d.ts.map +1 -1
  177. package/dist/tui/App.js +13 -4
  178. package/dist/tui/App.js.map +1 -1
  179. package/dist/tui/plain-logger.d.ts +5 -0
  180. package/dist/tui/plain-logger.d.ts.map +1 -0
  181. package/dist/tui/plain-logger.js +80 -0
  182. package/dist/tui/plain-logger.js.map +1 -0
  183. package/dist/tui/status-tracker.d.ts +3 -2
  184. package/dist/tui/status-tracker.d.ts.map +1 -1
  185. package/dist/tui/status-tracker.js.map +1 -1
  186. package/dist/webhooks/definitions/github.js +1 -1
  187. package/dist/webhooks/definitions/github.js.map +1 -1
  188. package/dist/webhooks/definitions/sentry.js +1 -1
  189. package/dist/webhooks/definitions/sentry.js.map +1 -1
  190. package/dist/webhooks/providers/github.d.ts +1 -1
  191. package/dist/webhooks/providers/github.d.ts.map +1 -1
  192. package/dist/webhooks/providers/github.js +13 -9
  193. package/dist/webhooks/providers/github.js.map +1 -1
  194. package/dist/webhooks/providers/sentry.d.ts +1 -1
  195. package/dist/webhooks/providers/sentry.d.ts.map +1 -1
  196. package/dist/webhooks/providers/sentry.js +12 -9
  197. package/dist/webhooks/providers/sentry.js.map +1 -1
  198. package/dist/webhooks/registry.d.ts +1 -1
  199. package/dist/webhooks/registry.d.ts.map +1 -1
  200. package/dist/webhooks/registry.js +20 -13
  201. package/dist/webhooks/registry.js.map +1 -1
  202. package/dist/webhooks/types.d.ts +16 -6
  203. package/dist/webhooks/types.d.ts.map +1 -1
  204. package/docker/Dockerfile +4 -1
  205. package/package.json +10 -1
  206. package/dist/cli/commands/setup.d.ts.map +0 -1
  207. package/dist/cli/commands/setup.js +0 -50
  208. package/dist/cli/commands/setup.js.map +0 -1
  209. package/dist/docker/container.d.ts +0 -19
  210. package/dist/docker/container.d.ts.map +0 -1
  211. package/dist/docker/container.js +0 -73
  212. package/dist/docker/container.js.map +0 -1
@@ -0,0 +1,405 @@
1
+ import { resolve } from "path";
2
+ import { existsSync } from "fs";
3
+ import { confirm } from "@inquirer/prompts";
4
+ import { execFileSync } from "child_process";
5
+ import { STSClient, GetCallerIdentityCommand } from "@aws-sdk/client-sts";
6
+ import { IAMClient, CreateRoleCommand, PutRolePolicyCommand } from "@aws-sdk/client-iam";
7
+ import { discoverAgents, loadAgentConfig, loadGlobalConfig } from "../../shared/config.js";
8
+ import { resolveCredential } from "../../credentials/registry.js";
9
+ import { promptCredential } from "../../credentials/prompter.js";
10
+ import { parseCredentialRef, credentialExists, writeCredentialFields } from "../../shared/credentials.js";
11
+ import { createLocalBackend, createBackendFromCloudConfig } from "../../shared/remote.js";
12
+ import { AWS_CONSTANTS } from "../../shared/aws-constants.js";
13
+ // Webhook secret credential types — these support multiple named instances
14
+ const WEBHOOK_SECRET_TYPES = {
15
+ github: "github_webhook_secret",
16
+ sentry: "sentry_client_secret",
17
+ };
18
+ export async function execute(opts) {
19
+ const projectPath = resolve(opts.project);
20
+ // Guard: refuse to run if the project path looks like an agent directory
21
+ if (existsSync(resolve(projectPath, "agent-config.toml")) || existsSync(resolve(projectPath, "PLAYBOOK.md"))) {
22
+ throw new Error(`"${projectPath}" looks like an agent directory, not a project directory. ` +
23
+ `Run 'al doctor' from the project root (the parent directory).`);
24
+ }
25
+ const agents = discoverAgents(projectPath);
26
+ if (agents.length === 0) {
27
+ console.log("No agents found. Create agents first, then re-run doctor.");
28
+ return;
29
+ }
30
+ // --- Local credential check ---
31
+ // Collect all credential refs from agents (including webhook secrets)
32
+ const credentialRefs = new Set();
33
+ for (const name of agents) {
34
+ const config = loadAgentConfig(projectPath, name);
35
+ for (const ref of config.credentials) {
36
+ credentialRefs.add(ref);
37
+ }
38
+ // Derive webhook secret credential refs from triggers
39
+ for (const trigger of config.webhooks || []) {
40
+ const credType = WEBHOOK_SECRET_TYPES[trigger.type];
41
+ if (credType) {
42
+ const instance = trigger.source || "default";
43
+ credentialRefs.add(`${credType}:${instance}`);
44
+ }
45
+ }
46
+ }
47
+ if (credentialRefs.size === 0) {
48
+ console.log("No credentials required by any agent.");
49
+ }
50
+ else {
51
+ console.log(`\nChecking ${credentialRefs.size} credential(s)...\n`);
52
+ let okCount = 0;
53
+ let promptedCount = 0;
54
+ for (const ref of credentialRefs) {
55
+ const { type, instance } = parseCredentialRef(ref);
56
+ const def = resolveCredential(type);
57
+ if (credentialExists(type, instance)) {
58
+ console.log(` [ok] ${def.label} (${ref})`);
59
+ okCount++;
60
+ continue;
61
+ }
62
+ const result = await promptCredential(def, instance);
63
+ if (result && Object.keys(result.values).length > 0) {
64
+ writeCredentialFields(type, instance, result.values);
65
+ promptedCount++;
66
+ }
67
+ }
68
+ console.log(`\nDone. ${okCount} already present, ${promptedCount} configured.`);
69
+ }
70
+ // --- Cloud mode ---
71
+ if (opts.cloud) {
72
+ const globalConfig = loadGlobalConfig(projectPath);
73
+ const cloudConfig = globalConfig.cloud;
74
+ if (!cloudConfig) {
75
+ throw new Error("No [cloud] section found in config.toml. " +
76
+ "Run 'al cloud setup' to configure a cloud provider first.");
77
+ }
78
+ // Push local creds to cloud
79
+ console.log(`\nPushing credentials to cloud (${cloudConfig.provider})...`);
80
+ const local = createLocalBackend();
81
+ const remote = await createBackendFromCloudConfig(cloudConfig);
82
+ const localEntries = await local.list();
83
+ if (localEntries.length === 0) {
84
+ console.log("No local credentials found. Run 'al doctor' first to configure them.");
85
+ }
86
+ else {
87
+ let pushed = 0;
88
+ for (const entry of localEntries) {
89
+ const value = await local.read(entry.type, entry.instance, entry.field);
90
+ if (value !== undefined) {
91
+ await remote.write(entry.type, entry.instance, entry.field, value);
92
+ pushed++;
93
+ }
94
+ }
95
+ console.log(`Pushed ${pushed} credential field(s) to ${cloudConfig.provider}.`);
96
+ }
97
+ // Reconcile IAM
98
+ console.log(`\nReconciling cloud IAM...`);
99
+ await reconcileCloudIam(projectPath, cloudConfig);
100
+ }
101
+ }
102
+ // --- Cloud IAM reconciliation ---
103
+ export async function reconcileCloudIam(projectPath, cloud) {
104
+ if (cloud.provider === "cloud-run") {
105
+ await reconcileGcp(projectPath, cloud);
106
+ }
107
+ else if (cloud.provider === "ecs") {
108
+ await reconcileAws(projectPath, cloud);
109
+ }
110
+ else {
111
+ throw new Error(`Unknown cloud provider: "${cloud.provider}"`);
112
+ }
113
+ }
114
+ async function reconcileGcp(projectPath, cloud) {
115
+ const { gcpProject, secretPrefix: configPrefix } = cloud;
116
+ if (!gcpProject) {
117
+ throw new Error("cloud.gcpProject is required in config.toml");
118
+ }
119
+ const secretPrefix = configPrefix || AWS_CONSTANTS.DEFAULT_SECRET_PREFIX;
120
+ // Verify gcloud is available and authenticated
121
+ try {
122
+ gcloud(["auth", "print-access-token"], gcpProject);
123
+ }
124
+ catch (err) {
125
+ throw new Error("gcloud CLI is not authenticated. Run 'gcloud auth login' first.\n" +
126
+ `Original error: ${err.message}`);
127
+ }
128
+ const agents = discoverAgents(projectPath);
129
+ if (agents.length === 0) {
130
+ console.log("No agents found. Create agents first.");
131
+ return;
132
+ }
133
+ // Pre-flight: check if any secrets exist in GSM with this prefix
134
+ const preflight = listGsmSecretCount(gcpProject, secretPrefix);
135
+ if (preflight === 0) {
136
+ console.log(`\nWarning: No secrets found in GSM with prefix "${secretPrefix}".\n` +
137
+ `IAM bindings are created against existing secrets, so you should push credentials first.\n`);
138
+ const proceed = await confirm({
139
+ message: "Continue anyway? (Service accounts will be created but no secrets will be bound)",
140
+ default: false,
141
+ });
142
+ if (!proceed) {
143
+ console.log("Aborted. Push credentials first, then re-run.");
144
+ return;
145
+ }
146
+ }
147
+ console.log(`\nSetting up Cloud Run service accounts for ${agents.length} agent(s)...\n`);
148
+ for (const name of agents) {
149
+ const config = loadAgentConfig(projectPath, name);
150
+ const saName = AWS_CONSTANTS.serviceAccountName(name);
151
+ const saEmail = AWS_CONSTANTS.serviceAccountEmail(name, gcpProject);
152
+ console.log(` Agent: ${name}`);
153
+ console.log(` SA: ${saEmail}`);
154
+ // 1. Create service account (idempotent)
155
+ try {
156
+ gcloud([
157
+ "iam", "service-accounts", "create", saName,
158
+ "--display-name", `Action Llama agent: ${name}`,
159
+ "--project", gcpProject,
160
+ ], gcpProject);
161
+ console.log(` Created service account`);
162
+ }
163
+ catch (err) {
164
+ if (err.message?.includes("already exists")) {
165
+ console.log(` Service account already exists`);
166
+ }
167
+ else {
168
+ throw err;
169
+ }
170
+ }
171
+ // 2. Collect all secret names this agent needs
172
+ const credRefs = [...new Set(config.credentials)];
173
+ if (config.model.authType !== "pi_auth" && !credRefs.includes("anthropic_key:default")) {
174
+ credRefs.push("anthropic_key:default");
175
+ }
176
+ const secretNames = [];
177
+ for (const ref of credRefs) {
178
+ const { type, instance } = parseCredentialRef(ref);
179
+ const fields = listGsmFields(gcpProject, secretPrefix, type, instance);
180
+ for (const field of fields) {
181
+ secretNames.push(`${secretPrefix}--${type}--${instance}--${field}`);
182
+ }
183
+ }
184
+ // 3. Grant secretmanager.secretAccessor on each secret
185
+ let boundCount = 0;
186
+ for (const secretName of secretNames) {
187
+ try {
188
+ gcloud([
189
+ "secrets", "add-iam-policy-binding", secretName,
190
+ "--member", `serviceAccount:${saEmail}`,
191
+ "--role", "roles/secretmanager.secretAccessor",
192
+ "--project", gcpProject,
193
+ ], gcpProject);
194
+ boundCount++;
195
+ }
196
+ catch (err) {
197
+ if (err.message?.includes("already exists") || err.message?.includes("already has")) {
198
+ boundCount++;
199
+ }
200
+ else {
201
+ console.log(` Warning: failed to bind ${secretName}: ${err.message}`);
202
+ }
203
+ }
204
+ }
205
+ console.log(` Bound ${boundCount} secret(s)`);
206
+ // 4. Grant the SA permission to act as itself (for Cloud Run job execution)
207
+ try {
208
+ gcloud([
209
+ "iam", "service-accounts", "add-iam-policy-binding", saEmail,
210
+ "--member", `serviceAccount:${saEmail}`,
211
+ "--role", "roles/iam.serviceAccountUser",
212
+ "--project", gcpProject,
213
+ ], gcpProject);
214
+ }
215
+ catch {
216
+ // May already be bound
217
+ }
218
+ console.log("");
219
+ }
220
+ console.log("Done. Each agent now has an isolated service account with access to only its declared secrets.");
221
+ }
222
+ async function reconcileAws(projectPath, cloud) {
223
+ const { awsRegion, ecrRepository, awsSecretPrefix } = cloud;
224
+ if (!awsRegion) {
225
+ throw new Error("cloud.awsRegion is required in config.toml");
226
+ }
227
+ if (!ecrRepository) {
228
+ throw new Error("cloud.ecrRepository is required in config.toml");
229
+ }
230
+ const secretPrefix = awsSecretPrefix || AWS_CONSTANTS.DEFAULT_SECRET_PREFIX;
231
+ // Extract account ID from ECR repo URI
232
+ const accountMatch = ecrRepository.match(/^(\d+)\.dkr\.ecr\./);
233
+ if (!accountMatch) {
234
+ throw new Error(`Cannot extract AWS account ID from cloud.ecrRepository: "${ecrRepository}". ` +
235
+ `Expected format: 123456789012.dkr.ecr.<region>.amazonaws.com/<repo>`);
236
+ }
237
+ const accountId = accountMatch[1];
238
+ // Verify AWS credentials are valid
239
+ const stsClient = new STSClient({ region: awsRegion });
240
+ try {
241
+ await stsClient.send(new GetCallerIdentityCommand({}));
242
+ }
243
+ catch (err) {
244
+ throw new Error("AWS CLI is not authenticated. Run 'aws configure' or set AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY.\n" +
245
+ `Original error: ${err.message}`);
246
+ }
247
+ const agents = discoverAgents(projectPath);
248
+ if (agents.length === 0) {
249
+ console.log("No agents found. Create agents first.");
250
+ return;
251
+ }
252
+ // Trust policy for ECS tasks
253
+ const trustPolicy = JSON.stringify({
254
+ Version: "2012-10-17",
255
+ Statement: [{
256
+ Effect: "Allow",
257
+ Principal: { Service: "ecs-tasks.amazonaws.com" },
258
+ Action: "sts:AssumeRole",
259
+ }],
260
+ });
261
+ const iamClient = new IAMClient({ region: awsRegion });
262
+ // Ensure execution role has Secrets Manager access (ECS uses this role to inject secrets)
263
+ if (cloud.executionRoleArn) {
264
+ const executionRoleName = cloud.executionRoleArn.split("/").pop();
265
+ try {
266
+ await iamClient.send(new PutRolePolicyCommand({
267
+ RoleName: executionRoleName,
268
+ PolicyName: "ActionLlamaExecution",
269
+ PolicyDocument: JSON.stringify({
270
+ Version: "2012-10-17",
271
+ Statement: [
272
+ {
273
+ Effect: "Allow",
274
+ Action: "secretsmanager:GetSecretValue",
275
+ Resource: `arn:aws:secretsmanager:${awsRegion}:${accountId}:secret:${secretPrefix}/*`,
276
+ },
277
+ {
278
+ Effect: "Allow",
279
+ Action: "logs:CreateLogGroup",
280
+ Resource: `arn:aws:logs:${awsRegion}:${accountId}:log-group:${AWS_CONSTANTS.LOG_GROUP}*`,
281
+ },
282
+ ],
283
+ }),
284
+ }));
285
+ console.log(`Execution role (${executionRoleName}): Secrets Manager + CloudWatch policy applied`);
286
+ }
287
+ catch (err) {
288
+ throw new Error(`Failed to attach ActionLlamaExecution policy to ${executionRoleName}: ${err.message}\n` +
289
+ `The execution role needs secretsmanager:GetSecretValue and logs:CreateLogGroup permissions.\n` +
290
+ `Either grant your IAM user iam:PutRolePolicy on this role, or attach the policy manually in the AWS Console.`);
291
+ }
292
+ }
293
+ console.log(`\nSetting up ECS task roles for ${agents.length} agent(s)...\n`);
294
+ for (const name of agents) {
295
+ const config = loadAgentConfig(projectPath, name);
296
+ const roleName = AWS_CONSTANTS.taskRoleName(name);
297
+ console.log(` Agent: ${name}`);
298
+ console.log(` Role: ${roleName}`);
299
+ // 1. Create IAM role (idempotent)
300
+ try {
301
+ await iamClient.send(new CreateRoleCommand({
302
+ RoleName: roleName,
303
+ AssumeRolePolicyDocument: trustPolicy,
304
+ }));
305
+ console.log(` Created IAM role`);
306
+ }
307
+ catch (err) {
308
+ if (err.name === "EntityAlreadyExistsException") {
309
+ console.log(` IAM role already exists`);
310
+ }
311
+ else {
312
+ throw err;
313
+ }
314
+ }
315
+ // 2. Collect secret ARNs this agent needs
316
+ const credRefs = [...new Set(config.credentials)];
317
+ if (config.model.authType !== "pi_auth" && !credRefs.includes("anthropic_key:default")) {
318
+ credRefs.push("anthropic_key:default");
319
+ }
320
+ const secretArns = [];
321
+ for (const ref of credRefs) {
322
+ const { type, instance } = parseCredentialRef(ref);
323
+ secretArns.push(`arn:aws:secretsmanager:${awsRegion}:${accountId}:secret:${secretPrefix}/${type}/${instance}/*`);
324
+ }
325
+ // 3. Put inline policy for Secrets Manager access
326
+ if (secretArns.length > 0) {
327
+ const policy = JSON.stringify({
328
+ Version: "2012-10-17",
329
+ Statement: [{
330
+ Effect: "Allow",
331
+ Action: "secretsmanager:GetSecretValue",
332
+ Resource: secretArns,
333
+ }],
334
+ });
335
+ try {
336
+ await iamClient.send(new PutRolePolicyCommand({
337
+ RoleName: roleName,
338
+ PolicyName: "SecretsAccess",
339
+ PolicyDocument: policy,
340
+ }));
341
+ console.log(` Bound ${secretArns.length} secret path(s)`);
342
+ }
343
+ catch (err) {
344
+ console.log(` Warning: failed to put policy: ${err.message}`);
345
+ }
346
+ }
347
+ else {
348
+ console.log(` No secrets to bind`);
349
+ }
350
+ console.log("");
351
+ }
352
+ console.log("Done. Each agent now has an isolated IAM task role with access to only its declared secrets.");
353
+ console.log(`\nTask roles follow the convention: al-{agentName}-task-role`);
354
+ console.log("The ECS runtime will use them automatically at launch time.");
355
+ }
356
+ // --- Helpers ---
357
+ function gcloud(args, _project) {
358
+ return execFileSync("gcloud", args, {
359
+ encoding: "utf-8",
360
+ timeout: 30_000,
361
+ stdio: ["pipe", "pipe", "pipe"],
362
+ }).trim();
363
+ }
364
+ function listGsmSecretCount(gcpProject, prefix) {
365
+ try {
366
+ const output = gcloud([
367
+ "secrets", "list",
368
+ "--filter", `name:${prefix}--`,
369
+ "--format", "value(name)",
370
+ "--project", gcpProject,
371
+ ], gcpProject);
372
+ if (!output.trim())
373
+ return 0;
374
+ return output.trim().split("\n").length;
375
+ }
376
+ catch {
377
+ return 0;
378
+ }
379
+ }
380
+ function listGsmFields(gcpProject, prefix, type, instance) {
381
+ const filter = `name:${prefix}--${type}--${instance}--`;
382
+ try {
383
+ const output = gcloud([
384
+ "secrets", "list",
385
+ "--filter", filter,
386
+ "--format", "value(name)",
387
+ "--project", gcpProject,
388
+ ], gcpProject);
389
+ if (!output.trim())
390
+ return [];
391
+ const fields = [];
392
+ for (const line of output.split("\n")) {
393
+ const secretId = line.trim().split("/").pop();
394
+ const parts = secretId.split("--");
395
+ if (parts.length === 4 && parts[0] === prefix && parts[1] === type && parts[2] === instance) {
396
+ fields.push(parts[3]);
397
+ }
398
+ }
399
+ return fields;
400
+ }
401
+ catch {
402
+ return [];
403
+ }
404
+ }
405
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@ export declare function execute(agent: string, opts: {
3
3
  lines: string;
4
4
  follow?: boolean;
5
5
  date?: string;
6
+ cloud?: boolean;
6
7
  }): Promise<void>;
7
8
  //# sourceMappingURL=logs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAiIA,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE,OAAO,CAAC,IAAI,CAAC,CAkBf"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAkIA,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzF,OAAO,CAAC,IAAI,CAAC,CAiGf"}
@@ -2,6 +2,7 @@ import { resolve } from "path";
2
2
  import { createReadStream, readdirSync, existsSync, statSync } from "fs";
3
3
  import { createInterface } from "readline";
4
4
  import { logsDir } from "../../shared/paths.js";
5
+ import { loadGlobalConfig } from "../../shared/config.js";
5
6
  const LEVEL_COLORS = {
6
7
  10: { label: "TRACE", color: "\x1b[90m" }, // gray
7
8
  20: { label: "DEBUG", color: "\x1b[36m" }, // cyan
@@ -103,6 +104,72 @@ async function followFile(filePath, lastN) {
103
104
  }
104
105
  export async function execute(agent, opts) {
105
106
  const projectPath = resolve(opts.project);
107
+ if (opts.cloud) {
108
+ const globalConfig = loadGlobalConfig(projectPath);
109
+ const cloud = globalConfig.cloud;
110
+ if (!cloud) {
111
+ throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
112
+ }
113
+ const limit = parseInt(opts.lines, 10) || 50;
114
+ let runtime;
115
+ if (cloud.provider === "cloud-run") {
116
+ const { CloudRunJobRuntime } = await import("../../docker/cloud-run-runtime.js");
117
+ runtime = new CloudRunJobRuntime(cloud);
118
+ }
119
+ else {
120
+ const { ECSFargateRuntime } = await import("../../docker/ecs-runtime.js");
121
+ runtime = new ECSFargateRuntime({
122
+ awsRegion: cloud.awsRegion,
123
+ ecsCluster: cloud.ecsCluster,
124
+ ecrRepository: cloud.ecrRepository,
125
+ executionRoleArn: cloud.executionRoleArn,
126
+ taskRoleArn: cloud.taskRoleArn,
127
+ subnets: cloud.subnets,
128
+ securityGroups: cloud.securityGroups,
129
+ secretPrefix: cloud.awsSecretPrefix,
130
+ });
131
+ }
132
+ if (opts.follow) {
133
+ // Find running agent container to follow
134
+ console.log(`Looking for running ${agent} agent...`);
135
+ const runningAgents = await runtime.listRunningAgents();
136
+ const targetAgent = runningAgents.find(a => a.agentName === agent);
137
+ if (!targetAgent) {
138
+ console.error(`No running agent found for "${agent}". Start the agent first to follow its logs.`);
139
+ process.exit(1);
140
+ }
141
+ console.log(`Following logs for ${agent} (${targetAgent.taskId})...`);
142
+ // Show last N entries first
143
+ const recentLines = await runtime.fetchLogs(agent, limit);
144
+ for (const line of recentLines) {
145
+ console.log(line);
146
+ }
147
+ // Start following new logs
148
+ const { stop } = runtime.streamLogs(targetAgent.taskId, (line) => console.log(line), (stderr) => console.error(stderr));
149
+ // Handle Ctrl+C to stop following
150
+ process.on("SIGINT", () => {
151
+ console.log("\nStopping log follow...");
152
+ stop();
153
+ process.exit(0);
154
+ });
155
+ // Keep the process alive
156
+ await new Promise(() => { });
157
+ }
158
+ else {
159
+ // Static log fetch (original behavior)
160
+ console.log(`Fetching cloud logs for ${agent}...`);
161
+ const lines = await runtime.fetchLogs(agent, limit);
162
+ if (lines.length === 0) {
163
+ console.log("No log events found.");
164
+ }
165
+ else {
166
+ for (const line of lines) {
167
+ console.log(line);
168
+ }
169
+ }
170
+ }
171
+ return;
172
+ }
106
173
  const dir = logsDir(projectPath);
107
174
  const n = parseInt(opts.lines, 10);
108
175
  const logFile = findLogFile(dir, agent, opts.date);
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDzD"}
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzD"}
@@ -11,7 +11,7 @@ export async function execute(name) {
11
11
  const projectPath = resolve(process.cwd(), name);
12
12
  console.log("\n=== Action Llama — New Project ===\n");
13
13
  // Only prompt for the Anthropic credential; other credentials are
14
- // handled per-agent by `al setup` (which runs automatically before `al start`).
14
+ // handled per-agent by `al doctor` (which runs automatically before `al start`).
15
15
  console.log("--- Anthropic Auth ---\n");
16
16
  const anthropicDef = resolveCredential("anthropic_key");
17
17
  const result = await promptCredential(anthropicDef);
@@ -30,7 +30,14 @@ export async function execute(name) {
30
30
  console.log(" Using existing pi auth (no key file needed)");
31
31
  }
32
32
  console.log("\n--- Writing configuration ---\n");
33
- const globalConfig = {};
33
+ const globalConfig = {
34
+ model: {
35
+ provider: "anthropic",
36
+ model: "claude-sonnet-4-20250514",
37
+ thinkingLevel: "medium",
38
+ authType: result ? "api_key" : "pi_auth",
39
+ },
40
+ };
34
41
  scaffoldProject(projectPath, globalConfig, [], name);
35
42
  console.log(` Wrote ${projectPath}/package.json`);
36
43
  console.log(` Wrote ${projectPath}/AGENTS.md`);
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,kEAAkE;IAClE,gFAAgF;IAChF,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEpD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,qBAAqB,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,yBAAyB,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,eAAe,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,YAAY,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC;;;iBAGG,eAAe;iBACf,WAAW;;;OAGrB,IAAI;;;CAGV,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,kEAAkE;IAClE,iFAAiF;IACjF,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEpD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,qBAAqB,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,yBAAyB,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAiB;QACjC,KAAK,EAAE;YACL,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,0BAA0B;YACjC,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACzC;KACF,CAAC;IAEF,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,eAAe,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,YAAY,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC;;;iBAGG,eAAe;iBACf,WAAW;;;OAGrB,IAAI;;;CAGV,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function execute(agent: string, opts: {
2
+ project: string;
3
+ noDocker?: boolean;
4
+ cloud?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAWA,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJ1H"}