@action-llama/action-llama 0.5.0 → 0.6.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 (60) hide show
  1. package/AGENTS.md +420 -0
  2. package/dist/agents/container-runner.d.ts.map +1 -1
  3. package/dist/agents/container-runner.js +1 -0
  4. package/dist/agents/container-runner.js.map +1 -1
  5. package/dist/agents/prompt.d.ts +8 -4
  6. package/dist/agents/prompt.d.ts.map +1 -1
  7. package/dist/agents/prompt.js +74 -8
  8. package/dist/agents/prompt.js.map +1 -1
  9. package/dist/cli/commands/doctor.d.ts +1 -0
  10. package/dist/cli/commands/doctor.d.ts.map +1 -1
  11. package/dist/cli/commands/doctor.js +76 -1
  12. package/dist/cli/commands/doctor.js.map +1 -1
  13. package/dist/cli/commands/start.js +1 -1
  14. package/dist/cli/commands/start.js.map +1 -1
  15. package/dist/docker/ecs-runtime.d.ts.map +1 -1
  16. package/dist/docker/ecs-runtime.js +58 -2
  17. package/dist/docker/ecs-runtime.js.map +1 -1
  18. package/dist/gateway/index.d.ts +3 -0
  19. package/dist/gateway/index.d.ts.map +1 -1
  20. package/dist/gateway/index.js +14 -2
  21. package/dist/gateway/index.js.map +1 -1
  22. package/dist/gateway/lock-store.d.ts +36 -0
  23. package/dist/gateway/lock-store.d.ts.map +1 -0
  24. package/dist/gateway/lock-store.js +119 -0
  25. package/dist/gateway/lock-store.js.map +1 -0
  26. package/dist/gateway/routes/dashboard.d.ts.map +1 -1
  27. package/dist/gateway/routes/dashboard.js +32 -0
  28. package/dist/gateway/routes/dashboard.js.map +1 -1
  29. package/dist/gateway/routes/locks.d.ts +6 -0
  30. package/dist/gateway/routes/locks.d.ts.map +1 -0
  31. package/dist/gateway/routes/locks.js +100 -0
  32. package/dist/gateway/routes/locks.js.map +1 -0
  33. package/dist/gateway/types.d.ts +1 -0
  34. package/dist/gateway/types.d.ts.map +1 -1
  35. package/dist/scheduler/event-queue.d.ts +1 -1
  36. package/dist/scheduler/event-queue.d.ts.map +1 -1
  37. package/dist/scheduler/event-queue.js +2 -2
  38. package/dist/scheduler/event-queue.js.map +1 -1
  39. package/dist/scheduler/index.d.ts +2 -10
  40. package/dist/scheduler/index.d.ts.map +1 -1
  41. package/dist/scheduler/index.js +150 -83
  42. package/dist/scheduler/index.js.map +1 -1
  43. package/dist/scheduler/runner-pool.d.ts +42 -0
  44. package/dist/scheduler/runner-pool.d.ts.map +1 -0
  45. package/dist/scheduler/runner-pool.js +59 -0
  46. package/dist/scheduler/runner-pool.js.map +1 -0
  47. package/dist/setup/scaffold.d.ts.map +1 -1
  48. package/dist/setup/scaffold.js +19 -423
  49. package/dist/setup/scaffold.js.map +1 -1
  50. package/dist/shared/config.d.ts +2 -0
  51. package/dist/shared/config.d.ts.map +1 -1
  52. package/dist/shared/config.js.map +1 -1
  53. package/dist/tui/App.d.ts.map +1 -1
  54. package/dist/tui/App.js +40 -10
  55. package/dist/tui/App.js.map +1 -1
  56. package/dist/tui/status-tracker.d.ts +4 -0
  57. package/dist/tui/status-tracker.d.ts.map +1 -1
  58. package/dist/tui/status-tracker.js +22 -0
  59. package/dist/tui/status-tracker.js.map +1 -1
  60. package/package.json +2 -1
package/AGENTS.md ADDED
@@ -0,0 +1,420 @@
1
+ # Action Llama Project
2
+
3
+ This is an Action Llama project. It runs automated development agents triggered by cron schedules or webhooks.
4
+
5
+ ## Project Structure
6
+
7
+ Each agent is a directory containing:
8
+
9
+ - `agent-config.toml` — credentials, model, schedule, webhooks, params
10
+ - `PLAYBOOK.md` — the system prompt (playbook) that defines what the agent does
11
+ - `Dockerfile` (optional) — custom Docker image extending the base `al-agent:latest` (e.g. to install extra tools like `gh`)
12
+
13
+ ## Creating an Agent
14
+
15
+ 1. Create a directory for your agent (e.g. `my-agent/`)
16
+ 2. Add `agent-config.toml` with credentials, model config, and a schedule or webhook trigger
17
+ 3. Add `PLAYBOOK.md` with the playbook — step-by-step instructions the LLM follows each run
18
+ 4. If running in Docker mode and your agent needs tools beyond what the base image provides (git, curl, openssh-client, node), add a `Dockerfile` — see Docker Mode section below
19
+ 5. Verify with `npx al status`
20
+ 6. Run with `npx al start`
21
+
22
+ ## Credential Reference
23
+
24
+ Credentials are managed by the user via `al doctor` or `al creds add` and stored in `~/.action-llama-credentials/<type>/<instance>/<field>`. Reference them in `credentials` arrays as `"type:instance"` (e.g. `"github_token:default"`). The `:default` instance suffix can be omitted.
25
+
26
+ | Type | What it is | Fields | Runtime injection | What it enables |
27
+ |------|-----------|--------|-------------------|----------------|
28
+ | `anthropic_key` | Anthropic API key or OAuth token | `token` | Read directly by the agent SDK (not an env var) | LLM access (Anthropic models) |
29
+ | `openai_key` | OpenAI API key | `token` | Read directly by the agent SDK | LLM access (OpenAI models) |
30
+ | `groq_key` | Groq API key | `token` | Read directly by the agent SDK | LLM access (Groq models) |
31
+ | `google_key` | Google Gemini API key | `token` | Read directly by the agent SDK | LLM access (Gemini models) |
32
+ | `xai_key` | xAI API key | `token` | Read directly by the agent SDK | LLM access (Grok models) |
33
+ | `mistral_key` | Mistral API key | `token` | Read directly by the agent SDK | LLM access (Mistral models) |
34
+ | `openrouter_key` | OpenRouter API key | `token` | Read directly by the agent SDK | LLM access (OpenRouter multi-provider) |
35
+ | `custom_key` | Custom provider API key | `token` | Read directly by the agent SDK | LLM access (custom providers) |
36
+ | `github_token` | GitHub PAT (repo + workflow scopes) | `token` | `GITHUB_TOKEN` and `GH_TOKEN` env vars | `gh` CLI, `git` over HTTPS, GitHub API |
37
+ | `git_ssh` | SSH private key + git identity | `id_rsa`, `username`, `email` | SSH key mounted as file; `GIT_SSH_COMMAND` configured automatically; `GIT_AUTHOR_NAME`/`GIT_AUTHOR_EMAIL`/`GIT_COMMITTER_NAME`/`GIT_COMMITTER_EMAIL` set from `username`/`email` | `git clone`/`push` over SSH — **required for pushing to repos** |
38
+ | `sentry_token` | Sentry auth token | `token` | `SENTRY_AUTH_TOKEN` env var | Sentry API via `curl` |
39
+ | `github_webhook_secret` | Shared HMAC secret | `secret` | Used by gateway only (not injected into agents) | Validates GitHub webhook payloads |
40
+ | `sentry_client_secret` | Sentry client secret | `secret` | Used by gateway only (not injected into agents) | Validates Sentry webhook payloads |
41
+
42
+ **IMPORTANT:** Agents MUST NEVER ask users for credentials directly (API keys, tokens, passwords, etc.). Agents MUST NEVER run `al doctor` or interact with the credential system on behalf of the user. If a credential is missing at runtime, the agent should report the error and stop — the user will run `al doctor` and `al start` themselves.
43
+
44
+ ## Runtime Context
45
+
46
+ Every agent prompt has these XML blocks injected automatically at runtime:
47
+
48
+ ### `<agent-config>`
49
+
50
+ JSON object containing the agent's custom `[params]` from `agent-config.toml`. Example:
51
+
52
+ ```json
53
+ {"repos":["acme/app"],"triggerLabel":"agent","assignee":"bot-user"}
54
+ ```
55
+
56
+ (In this example, `repos` is a custom param defined in `[params]` — not a built-in field.)
57
+
58
+ ### `<credential-context>`
59
+
60
+ Lists which env vars and tools are available based on the agent's `credentials` array. Includes anti-exfiltration policy. The agent can rely on env vars like `GITHUB_TOKEN`, `GH_TOKEN`, `SENTRY_AUTH_TOKEN` being already set — it does NOT need to set them.
61
+
62
+ ### `<webhook-trigger>` (webhook runs only)
63
+
64
+ JSON object with the webhook event details. Only present when the agent is triggered by a webhook (not on scheduled runs). Schema:
65
+
66
+ ```json
67
+ {
68
+ "source": "github",
69
+ "event": "issues",
70
+ "action": "labeled",
71
+ "repo": "acme/app",
72
+ "number": 42,
73
+ "title": "Add dark mode",
74
+ "body": "Issue description...",
75
+ "url": "https://github.com/acme/app/issues/42",
76
+ "author": "user",
77
+ "assignee": "bot-user",
78
+ "labels": ["agent"],
79
+ "branch": null,
80
+ "comment": null,
81
+ "sender": "user",
82
+ "timestamp": "2025-01-15T10:30:00Z"
83
+ }
84
+ ```
85
+
86
+ ### `<agent-trigger>` (agent-triggered runs only)
87
+
88
+ JSON object with the source agent name and context. Only present when the agent was triggered by another agent via a `[TRIGGER]` signal. Schema:
89
+
90
+ ```json
91
+ {
92
+ "source": "dev",
93
+ "context": "I just opened PR #42 on acme/app. Please review it."
94
+ }
95
+ ```
96
+
97
+ ### Triggering other agents
98
+
99
+ An agent can trigger another agent by including a `[TRIGGER]` block in its output:
100
+
101
+ ```
102
+ [TRIGGER: reviewer]
103
+ I just opened PR #42. Please review it.
104
+ URL: https://github.com/acme/app/pull/42
105
+ [/TRIGGER]
106
+ ```
107
+
108
+ The scheduler will run the target agent with the context injected as an `<agent-trigger>` block. Rules:
109
+ - An agent cannot trigger itself
110
+ - If the target is busy or does not exist, the trigger is skipped
111
+ - Trigger chains are limited by `maxTriggerDepth` in `config.toml` (default: 3)
112
+
113
+ ## Webhook Reference
114
+
115
+ ### How webhooks work
116
+
117
+ 1. Webhook sources are defined in the project's `config.toml` under `[webhooks.<name>]` with a provider type and optional credential
118
+ 2. The gateway receives an HTTP POST at `/webhooks/github` or `/webhooks/sentry`
119
+ 3. The payload is validated using the credential's HMAC secret (e.g. `github_webhook_secret` for GitHub)
120
+ 4. The gateway matches the event against all agents' `[[webhooks]]` entries (AND logic — all specified fields must match; omitted fields are not checked)
121
+ 5. Matching agents are triggered with a `<webhook-trigger>` block injected into their prompt
122
+
123
+ ### Defining webhook sources in `config.toml`
124
+
125
+ Webhook sources are defined once at the project level. Each source has a name, provider type, and optional credential instance for HMAC validation:
126
+
127
+ ```toml
128
+ [webhooks.my-github]
129
+ type = "github"
130
+ credential = "MyOrg" # credential instance name (github_webhook_secret:MyOrg)
131
+
132
+ [webhooks.my-sentry]
133
+ type = "sentry"
134
+ credential = "SentryProd" # credential instance name (sentry_client_secret:SentryProd)
135
+
136
+ [webhooks.unsigned-github]
137
+ type = "github" # no credential — accepts unsigned webhooks
138
+ ```
139
+
140
+ ### Agent webhook filters
141
+
142
+ Agents reference a webhook source by name and add filters:
143
+
144
+ | Field | Type | Description |
145
+ |-------|------|-------------|
146
+ | `source` | string | Name of a webhook source from `config.toml` (required) |
147
+ | `repos` | string[] | Filter to specific repos (owner/repo format) |
148
+ | `events` | string[] | Event types: `issues`, `pull_request`, `push`, `issue_comment`, etc. |
149
+ | `actions` | string[] | Event actions: `opened`, `labeled`, `closed`, `synchronize`, etc. |
150
+ | `labels` | string[] | Only trigger when the issue/PR has ALL of these labels |
151
+ | `assignee` | string | Only trigger when assigned to this user |
152
+ | `author` | string | Only trigger for events by this author |
153
+ | `branches` | string[] | Only trigger for pushes/PRs on these branches |
154
+ | `resources` | string[] | Sentry: `error`, `event_alert`, `metric_alert`, `issue`, `comment` |
155
+
156
+ ### GitHub webhook setup
157
+
158
+ In your GitHub repo settings, add a webhook:
159
+ - **Payload URL:** `http://<your-host>:8080/webhooks/github`
160
+ - **Content type:** `application/json`
161
+ - **Secret:** the same secret stored as the `github_webhook_secret` credential
162
+
163
+ ### TOML syntax for webhooks
164
+
165
+ Each webhook is a separate `[[webhooks]]` block (double brackets = array of tables). The `source` field references a webhook source defined in `config.toml`:
166
+
167
+ ```toml
168
+ # Each [[webhooks]] references a source from config.toml
169
+ [[webhooks]]
170
+ source = "my-github"
171
+ events = ["issues"]
172
+ actions = ["labeled"]
173
+ labels = ["agent"]
174
+
175
+ [[webhooks]]
176
+ source = "my-github"
177
+ events = ["pull_request"]
178
+ # repos = ["my-org/specific-repo"] # optional — filter to specific repos
179
+
180
+ [[webhooks]]
181
+ source = "my-sentry"
182
+ resources = ["error", "event_alert"]
183
+ ```
184
+
185
+ ## `agent-config.toml` Complete Reference
186
+
187
+ The config file uses TOML syntax. The agent name is derived from the directory name — do not include it in the config.
188
+
189
+ ### Minimal example (webhook-driven)
190
+
191
+ ```toml
192
+ credentials = ["github_token:default", "git_ssh:default"]
193
+
194
+ [[webhooks]]
195
+ source = "my-github"
196
+ events = ["issues"]
197
+ actions = ["labeled"]
198
+ labels = ["agent"]
199
+
200
+ [params]
201
+ triggerLabel = "agent"
202
+ assignee = "your-github-username"
203
+ ```
204
+
205
+ The `[model]` section is **optional** — agents inherit the default model from the project's `config.toml`. Only add `[model]` to an agent config if you want to override the default (e.g. use a different model or thinking level for that specific agent).
206
+
207
+ ### Full example (webhooks + params + model override + optional schedule)
208
+
209
+ ```toml
210
+ credentials = ["github_token:default", "git_ssh:default", "sentry_token:default"]
211
+ # schedule = "*/5 * * * *" # Optional: for scheduled polling in addition to webhooks
212
+
213
+ # Optional: override the project default model for this agent
214
+ [model]
215
+ provider = "anthropic"
216
+ model = "claude-sonnet-4-20250514"
217
+ thinkingLevel = "medium"
218
+ authType = "api_key"
219
+
220
+ [[webhooks]]
221
+ source = "my-github"
222
+ events = ["issues"]
223
+ actions = ["labeled"]
224
+ labels = ["agent"]
225
+
226
+ [[webhooks]]
227
+ source = "my-sentry"
228
+ resources = ["error", "event_alert"]
229
+
230
+ [params]
231
+ triggerLabel = "agent"
232
+ assignee = "bot-user"
233
+ sentryOrg = "acme"
234
+ sentryProjects = ["web-app", "api"]
235
+ # repos = ["fallback/repo"] # Optional: only needed if using schedule without webhook repo context
236
+ ```
237
+
238
+ ### Field reference
239
+
240
+ | Field | Type | Required | Description |
241
+ |-------|------|----------|-------------|
242
+ | `credentials` | string[] | Yes | Credential refs as `"type:instance"` (see Credential Reference above) |
243
+ | `schedule` | string | No* | Cron expression (e.g. "*/5 * * * *") |
244
+ | `model` | table | No | LLM model config — omit to inherit from project `config.toml` |
245
+ | `model.provider` | string | Yes* | "anthropic", "openai", "groq", "google", "xai", "mistral", "openrouter", or "custom" |
246
+ | `model.model` | string | Yes* | Model ID (e.g. "claude-sonnet-4-20250514") |
247
+ | `model.thinkingLevel` | string | No | off \| minimal \| low \| medium \| high \| xhigh (only relevant for models with reasoning support, e.g. Claude Sonnet/Opus; omit for other models) |
248
+ | `model.authType` | string | Yes* | api_key \| oauth_token \| pi_auth |
249
+ | `webhooks[].source` | string | Yes | Name of a webhook source from `config.toml` |
250
+ | `webhooks[].repos` | string[] | No | Filter to specific repos |
251
+ | `webhooks[].events` | string[] | No | GitHub event types: issues, pull_request, push |
252
+ | `webhooks[].actions` | string[] | No | GitHub actions: opened, labeled, closed |
253
+ | `webhooks[].labels` | string[] | No | Only trigger for issues/PRs with these labels |
254
+ | `webhooks[].resources` | string[] | No | Sentry resources: error, event_alert, metric_alert, issue, comment |
255
+ | `params.*` | any | No | Custom key-value pairs injected into the prompt |
256
+
257
+ *At least one of `schedule` or `webhooks` is required. *Required within `[model]` if the agent defines its own model block.
258
+
259
+ ### TOML syntax reminders
260
+
261
+ - Strings: `key = "value"`
262
+ - Arrays: `key = ["a", "b"]`
263
+ - Tables (objects): `[tableName]` on its own line, followed by key-value pairs
264
+ - Array of tables: `[[arrayName]]` on its own line — each block is one entry in the array
265
+ - Comments: `# comment`
266
+
267
+ ## Example Playbook
268
+
269
+ **Agent playbooks must be detailed and prescriptive with step-by-step commands. Copy this example and customize rather than writing from scratch.**
270
+
271
+ The following is a complete, working PLAYBOOK.md for a developer agent. Use it as a template for all new agents:
272
+
273
+ ```markdown
274
+ # Developer Agent
275
+
276
+ You are a developer agent. Your job is to pick up GitHub issues and implement the requested changes.
277
+
278
+ Your configuration is in the \`<agent-config>\` block at the start of your prompt.
279
+ Use those values for triggerLabel and assignee.
280
+
281
+ \`GITHUB_TOKEN\` is already set in your environment. Use \`gh\` CLI and \`git\` directly.
282
+ (Note: \`gh\` is not in the base Docker image — this agent needs a custom Dockerfile that installs it. See Docker Mode section.)
283
+
284
+ **You MUST complete ALL steps below.** Do not stop after reading the issue — you must implement, commit, push, and open a PR.
285
+
286
+ ## Repository Context
287
+
288
+ This agent infers the repository from the issue context instead of using hardcoded configuration.
289
+
290
+ **For webhook triggers:** The repository is extracted from the \`<webhook-trigger>\` block's \`repo\` field.
291
+
292
+ **For scheduled triggers:** The agent uses the \`repos\` parameter from \`<agent-config>\` as a fallback to check for work across configured repositories.
293
+
294
+ ## Setup — ensure labels exist
295
+
296
+ Before looking for work, ensure the required labels exist on the target repo. The repo is determined as follows:
297
+
298
+ - **Webhook mode:** Extract repo from \`<webhook-trigger>\` JSON block
299
+ - **Scheduled mode:** Use repos from \`<agent-config>\` params
300
+
301
+ Run the following (these are idempotent — they succeed silently if the label already exists):
302
+
303
+ \`\`\`
304
+ # For webhook triggers, use the repo from webhook context
305
+ # For scheduled triggers, iterate through configured repos
306
+ gh label create "<triggerLabel>" --repo <determined-repo> --color 0E8A16 --description "Trigger label for dev agent" --force
307
+ gh label create "in-progress" --repo <determined-repo> --color FBCA04 --description "Agent is working on this" --force
308
+ gh label create "agent-completed" --repo <determined-repo> --color 1D76DB --description "Agent has opened a PR" --force
309
+ \`\`\`
310
+
311
+ ## Finding work
312
+
313
+ **Webhook trigger:** When you receive a \`<webhook-trigger>\` block, extract the repository from the \`repo\` field and the issue details from the trigger context. Check the issue's labels and assignee against your \`triggerLabel\` and \`assignee\` params. If the issue matches (has your trigger label and is assigned to your assignee), proceed with implementation using the extracted repository. If it does not match, respond \`[SILENT]\` and stop.
314
+
315
+ **Scheduled trigger:** If \`repos\` parameter exists in \`<agent-config>\`, run \`gh issue list --repo <repo> --label <triggerLabel> --assignee <assignee> --state open --json number,title,body,comments,labels --limit 1\` for each configured repo. If no work found in any repo, respond \`[SILENT]\` and stop.
316
+
317
+ ## Workflow
318
+
319
+ **Important:** First determine the target repository from the trigger context (webhook \`repo\` field or configured \`repos\` parameter).
320
+
321
+ 1. **Claim the issue** — run \`gh issue edit <number> --repo <determined-repo> --add-label in-progress\` to mark it as claimed.
322
+
323
+ 2. **Clone and branch** — run \`git clone git@github.com:<determined-repo>.git /workspace/repo && cd /workspace/repo && git checkout -b agent/<number>\`.
324
+
325
+ 3. **Understand the issue** — read the title, body, and comments. Note file paths, acceptance criteria, and linked issues.
326
+
327
+ 4. **Read project conventions** — in the repo, read \`PLAYBOOK.md\`, \`CLAUDE.md\`, \`CONTRIBUTING.md\`, and \`README.md\` if they exist. Follow any conventions found there.
328
+
329
+ 5. **Implement changes** — work in the repo. Make the minimum necessary changes, follow existing patterns, and write or update tests if the project has a test suite.
330
+
331
+ 6. **Validate** — run the project's test suite and linters (e.g., \`npm test\`). Fix failures before proceeding.
332
+
333
+ 7. **Commit** — \`git add -A && git commit -m "fix: <description> (closes #<number>)"\`
334
+
335
+ 8. **Push** — \`git push -u origin agent/<number>\`
336
+
337
+ 9. **Create a PR** — run \`gh pr create --repo <determined-repo> --head agent/<number> --base main --title "<title>" --body "Closes #<number>\n\n<description>"\`.
338
+
339
+ 10. **Comment on the issue** — run \`gh issue comment <number> --repo <determined-repo> --body "PR created: <pr_url>"\`.
340
+
341
+ 11. **Mark done** — run \`gh issue edit <number> --repo <determined-repo> --remove-label in-progress --add-label agent-completed\`.
342
+
343
+ ## Rules
344
+
345
+ - Work on exactly ONE issue per run
346
+ - Never modify files outside the repo directory
347
+ - **You MUST complete steps 7-11.** Do not stop early.
348
+ - If tests fail after 2 attempts, create the PR anyway with a note about failing tests
349
+ - If the issue is unclear, comment asking for clarification and stop
350
+ ```
351
+
352
+ ## Docker Mode
353
+
354
+ Docker container isolation is enabled by default. Each agent run launches an isolated container with a read-only root filesystem, dropped capabilities, non-root user, and resource limits. Use `--no-docker` to disable it for development.
355
+
356
+ ### Base image
357
+
358
+ The base image (`al-agent:latest`) is built automatically on first run. It includes Node.js, git, curl, openssh-client, and ca-certificates — the minimum needed for any agent.
359
+
360
+ ### Custom agent images
361
+
362
+ If your agent needs extra tools (e.g. `gh` CLI, Python, `jq`), add a `Dockerfile` to the agent directory that extends the base image:
363
+
364
+ ```dockerfile
365
+ FROM al-agent:latest
366
+ USER root
367
+ RUN apt-get update && apt-get install -y --no-install-recommends gh && rm -rf /var/lib/apt/lists/*
368
+ USER node
369
+ ```
370
+
371
+ Agent images are built automatically on startup. If no `Dockerfile` is present, the agent uses the base image.
372
+
373
+ ### Container filesystem
374
+
375
+ | Path | Mode | Contents |
376
+ |------|------|----------|
377
+ | `/app` | read-only | Action Llama application + node_modules |
378
+ | `/credentials` | read-only | Mounted credential files (`/<type>/<instance>/<field>`) |
379
+ | `/workspace` | read-write (tmpfs, 2GB) | Working directory — repos are cloned here |
380
+ | `/tmp` | read-write (tmpfs, 512MB) | Temporary files |
381
+ | `/home/node` | read-write (tmpfs, 64MB) | User home — `.ssh/` for SSH keys |
382
+
383
+ ### Docker config options
384
+
385
+ | Key | Default | Description |
386
+ |-----|---------|-------------|
387
+ | `local.enabled` | `true` | Enable Docker container isolation |
388
+ | `local.image` | `"al-agent:latest"` | Base Docker image name |
389
+ | `local.memory` | `"4g"` | Memory limit per container |
390
+ | `local.cpus` | `2` | CPU limit per container |
391
+ | `local.timeout` | `3600` | Max container runtime in seconds |
392
+
393
+ ## Running Agents
394
+
395
+ Start all agents with `al start` (or `npx al start`). This starts the scheduler which runs all discovered agents on their configured schedules/webhooks. There is no per-agent start command — `al start` always starts the entire project.
396
+
397
+ ### Automatic re-runs
398
+
399
+ When a scheduled agent completes productive work (i.e. it does not respond with `[SILENT]`), the scheduler immediately re-runs it. This continues until the agent reports `[SILENT]` (no more work), hits an error, or reaches the `maxReruns` limit. This way an agent drains its work queue without waiting for the next cron tick.
400
+
401
+ Set `maxReruns` in `config.toml` to control the limit (default: 10):
402
+
403
+ ```toml
404
+ maxReruns = 5
405
+ maxTriggerDepth = 3 # max depth for agent-to-agent trigger chains (default: 3)
406
+ ```
407
+
408
+ Webhook-triggered and agent-triggered runs do not re-run — they respond to a single event.
409
+
410
+ ## Further Documentation
411
+
412
+ Full documentation is available on GitHub:
413
+
414
+ - [Creating Agents](https://github.com/Action-Llama/action-llama/blob/main/docs/creating-agents.md)
415
+ - [agent-config.toml Reference](https://github.com/Action-Llama/action-llama/blob/main/docs/agent-config-reference.md)
416
+ - [Credentials](https://github.com/Action-Llama/action-llama/blob/main/docs/credentials.md)
417
+ - [Webhooks](https://github.com/Action-Llama/action-llama/blob/main/docs/webhooks.md)
418
+ - [Docker](https://github.com/Action-Llama/action-llama/blob/main/docs/docker.md) — custom Dockerfiles, standalone images, troubleshooting
419
+ - [CLI Commands](https://github.com/Action-Llama/action-llama/blob/main/docs/commands.md)
420
+ - [Example Agents](https://github.com/Action-Llama/action-llama/blob/main/docs/examples/dev-agent.md) — dev, reviewer, devops
@@ -1 +1 @@
1
- {"version":3,"file":"container-runner.d.ts","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAa,UAAU,EAAkB,MAAM,aAAa,CAAC;AAEzE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAuD;IAChF,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,KAAK,IAAI,EACvE,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAC7C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,aAAa;IAc/B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,OAAO,CAAC,cAAc;IAqEhB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAsI1H"}
1
+ {"version":3,"file":"container-runner.d.ts","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAa,UAAU,EAAkB,MAAM,aAAa,CAAC;AAEzE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAuD;IAChF,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,KAAK,IAAI,EACvE,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAC7C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,aAAa;IAc/B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,OAAO,CAAC,cAAc;IAqEhB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAuI1H"}
@@ -174,6 +174,7 @@ export class ContainerAgentRunner {
174
174
  const bundle = credentials.strategy === "volume" ? credentials.bundle : undefined;
175
175
  this.registerContainer(shutdownSecret, {
176
176
  containerName,
177
+ agentName: this.agentConfig.name,
177
178
  credentials: bundle,
178
179
  onLogLine: (line) => this.forwardLogLine(line),
179
180
  });
@@ -1 +1 @@
1
- {"version":3,"file":"container-runner.js","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-runner.js","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import type { AgentConfig } from "../shared/config.js";
2
2
  import type { WebhookContext } from "../webhooks/types.js";
3
+ export interface PromptSkills {
4
+ locking?: boolean;
5
+ }
6
+ export declare function buildLockSkill(): string;
3
7
  export declare function buildCredentialContext(credentials: string[]): string;
4
- export declare function buildScheduledPrompt(agentConfig: AgentConfig): string;
5
- export declare function buildManualPrompt(agentConfig: AgentConfig): string;
6
- export declare function buildTriggeredPrompt(agentConfig: AgentConfig, sourceAgent: string, context: string): string;
7
- export declare function buildWebhookPrompt(agentConfig: AgentConfig, context: WebhookContext): string;
8
+ export declare function buildScheduledPrompt(agentConfig: AgentConfig, skills?: PromptSkills): string;
9
+ export declare function buildManualPrompt(agentConfig: AgentConfig, skills?: PromptSkills): string;
10
+ export declare function buildTriggeredPrompt(agentConfig: AgentConfig, sourceAgent: string, context: string, skills?: PromptSkills): string;
11
+ export declare function buildWebhookPrompt(agentConfig: AgentConfig, context: WebhookContext, skills?: PromptSkills): string;
8
12
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agents/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAS3D,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAmCpE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAIrE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAIlE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK3G;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAK5F"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agents/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,IAAI,MAAM,CAoDvC;AAMD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAmCpE;AAWD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAK5F;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAKzF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAMlI;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAMnH"}
@@ -1,5 +1,58 @@
1
1
  import { resolveCredential } from "../credentials/registry.js";
2
2
  import { parseCredentialRef } from "../shared/credentials.js";
3
+ export function buildLockSkill() {
4
+ const lines = [
5
+ "<skill-lock>",
6
+ "## Skill: Resource Locking",
7
+ "",
8
+ "Use locks to coordinate with other agent instances and avoid duplicate work.",
9
+ "You may hold **at most one lock at a time**. Release your current lock before acquiring another.",
10
+ "",
11
+ "### LOCK(resourceKey)",
12
+ "Acquire an exclusive lock before working on a shared resource.",
13
+ "```",
14
+ 'curl -s -X POST $GATEWAY_URL/locks/acquire \\',
15
+ " -H 'Content-Type: application/json' \\",
16
+ ` -d '{"secret":"'$SHUTDOWN_SECRET'","resourceKey":"<resourceKey>"}'`,
17
+ "```",
18
+ "",
19
+ "### UNLOCK(resourceKey)",
20
+ "Release a lock when done with the resource.",
21
+ "```",
22
+ 'curl -s -X POST $GATEWAY_URL/locks/release \\',
23
+ " -H 'Content-Type: application/json' \\",
24
+ ` -d '{"secret":"'$SHUTDOWN_SECRET'","resourceKey":"<resourceKey>"}'`,
25
+ "```",
26
+ "",
27
+ "### HEARTBEAT(resourceKey)",
28
+ "Extend the TTL on a lock you hold. Use this during long-running work to prevent expiry.",
29
+ "```",
30
+ 'curl -s -X POST $GATEWAY_URL/locks/heartbeat \\',
31
+ " -H 'Content-Type: application/json' \\",
32
+ ` -d '{"secret":"'$SHUTDOWN_SECRET'","resourceKey":"<resourceKey>"}'`,
33
+ "```",
34
+ "",
35
+ "### Responses",
36
+ '- Acquired: `{"ok":true,"resourceKey":"..."}`',
37
+ '- Conflict: `{"ok":false,"holder":"<other-agent>","heldSince":...}` (HTTP 409)',
38
+ " → Another instance is already working on this. Skip it and move on.",
39
+ '- Already holding another lock: `{"ok":false,"reason":"already holding lock on ..."}` (HTTP 409)',
40
+ " → Release your current lock first.",
41
+ '- Released: `{"ok":true}`',
42
+ '- Heartbeat: `{"ok":true,"expiresAt":...}`',
43
+ "",
44
+ "### Guidelines",
45
+ "- You can hold **one lock at a time**. UNLOCK before acquiring a different resource.",
46
+ "- Always LOCK before starting work on a shared resource (issues, PRs, deployments)",
47
+ "- Always UNLOCK when done",
48
+ "- If a LOCK fails, skip that resource — do not wait or retry",
49
+ "- Use HEARTBEAT during long operations to keep the lock alive",
50
+ "- Locks expire automatically after 30 minutes if not refreshed",
51
+ '- Use descriptive keys: `"github issue acme/app#42"`, `"deploy api-prod"`',
52
+ "</skill-lock>",
53
+ ];
54
+ return lines.join("\n");
55
+ }
3
56
  function buildConfigBlock(agentConfig) {
4
57
  return JSON.stringify(agentConfig.params ?? {});
5
58
  }
@@ -36,26 +89,39 @@ export function buildCredentialContext(credentials) {
36
89
  lines.push("</credential-context>");
37
90
  return lines.join("\n");
38
91
  }
39
- export function buildScheduledPrompt(agentConfig) {
92
+ function buildSkillsBlock(skills) {
93
+ if (!skills)
94
+ return "";
95
+ const blocks = [];
96
+ if (skills.locking) {
97
+ blocks.push(buildLockSkill());
98
+ }
99
+ return blocks.length > 0 ? "\n\n" + blocks.join("\n\n") : "";
100
+ }
101
+ export function buildScheduledPrompt(agentConfig, skills) {
40
102
  const configBlock = buildConfigBlock(agentConfig);
41
103
  const credentialBlock = buildCredentialContext(agentConfig.credentials);
42
- return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}\n\nYou are running on a schedule. Check for new work and act on anything you find.`;
104
+ const skillsBlock = buildSkillsBlock(skills);
105
+ return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}${skillsBlock}\n\nYou are running on a schedule. Check for new work and act on anything you find.`;
43
106
  }
44
- export function buildManualPrompt(agentConfig) {
107
+ export function buildManualPrompt(agentConfig, skills) {
45
108
  const configBlock = buildConfigBlock(agentConfig);
46
109
  const credentialBlock = buildCredentialContext(agentConfig.credentials);
47
- return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}\n\nYou have been triggered manually. Check for new work and act on anything you find.`;
110
+ const skillsBlock = buildSkillsBlock(skills);
111
+ return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}${skillsBlock}\n\nYou have been triggered manually. Check for new work and act on anything you find.`;
48
112
  }
49
- export function buildTriggeredPrompt(agentConfig, sourceAgent, context) {
113
+ export function buildTriggeredPrompt(agentConfig, sourceAgent, context, skills) {
50
114
  const configBlock = buildConfigBlock(agentConfig);
51
115
  const credentialBlock = buildCredentialContext(agentConfig.credentials);
116
+ const skillsBlock = buildSkillsBlock(skills);
52
117
  const triggerBlock = JSON.stringify({ source: sourceAgent, context });
53
- return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}\n\n<agent-trigger>\n${triggerBlock}\n</agent-trigger>\n\nYou were triggered by the "${sourceAgent}" agent. Review the trigger context above and take appropriate action.`;
118
+ return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}${skillsBlock}\n\n<agent-trigger>\n${triggerBlock}\n</agent-trigger>\n\nYou were triggered by the "${sourceAgent}" agent. Review the trigger context above and take appropriate action.`;
54
119
  }
55
- export function buildWebhookPrompt(agentConfig, context) {
120
+ export function buildWebhookPrompt(agentConfig, context, skills) {
56
121
  const configBlock = buildConfigBlock(agentConfig);
57
122
  const credentialBlock = buildCredentialContext(agentConfig.credentials);
123
+ const skillsBlock = buildSkillsBlock(skills);
58
124
  const webhookBlock = JSON.stringify(context);
59
- return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}\n\n<webhook-trigger>\n${webhookBlock}\n</webhook-trigger>\n\nA webhook event just fired. Review the trigger context above and take appropriate action.`;
125
+ return `<agent-config>\n${configBlock}\n</agent-config>\n\n${credentialBlock}${skillsBlock}\n\n<webhook-trigger>\n${webhookBlock}\n</webhook-trigger>\n\nA webhook event just fired. Review the trigger context above and take appropriate action.`;
60
126
  }
61
127
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/agents/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,SAAS,gBAAgB,CAAC,WAAwB;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAqB;IAC1D,MAAM,KAAK,GAAG;QACZ,sBAAsB;QACtB,8DAA8D;QAC9D,EAAE;QACF,qDAAqD;KACtD,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,GAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QAED,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4PAA4P,CAAC,CAAC;IACzQ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,6JAA6J,CAAC,CAAC;IAC1K,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAwB;IAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxE,OAAO,mBAAmB,WAAW,wBAAwB,eAAe,qFAAqF,CAAC;AACpK,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAwB;IACxD,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxE,OAAO,mBAAmB,WAAW,wBAAwB,eAAe,wFAAwF,CAAC;AACvK,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAwB,EAAE,WAAmB,EAAE,OAAe;IACjG,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,OAAO,mBAAmB,WAAW,wBAAwB,eAAe,wBAAwB,YAAY,oDAAoD,WAAW,wEAAwE,CAAC;AAC1P,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAwB,EAAE,OAAuB;IAClF,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,mBAAmB,WAAW,wBAAwB,eAAe,0BAA0B,YAAY,mHAAmH,CAAC;AACxO,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/agents/prompt.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export declare function execute(opts: {
5
5
  checkOnly?: boolean;
6
6
  }): Promise<void>;
7
7
  export declare function reconcileCloudIam(projectPath: string, cloud: CloudConfig): Promise<void>;
8
+ export declare function validateEcsRoles(projectPath: string, cloud: CloudConfig): Promise<void>;
8
9
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAc1D,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0K5G;AAID,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAc1D,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgL5G;AAID,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F;AA6UD,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E7F"}