@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.
- package/LICENSE +21 -0
- package/README.md +43 -102
- package/dist/agents/container-entry.js +123 -17
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +10 -4
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +83 -105
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/prompt.d.ts +2 -0
- package/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/prompt.js +12 -4
- package/dist/agents/prompt.js.map +1 -1
- package/dist/agents/runner.d.ts +10 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +60 -8
- package/dist/agents/runner.js.map +1 -1
- package/dist/cli/commands/{setup.d.ts → cloud-setup.d.ts} +1 -1
- package/dist/cli/commands/cloud-setup.d.ts.map +1 -0
- package/dist/cli/commands/cloud-setup.js +565 -0
- package/dist/cli/commands/cloud-setup.js.map +1 -0
- package/dist/cli/commands/cloud-teardown.d.ts +6 -0
- package/dist/cli/commands/cloud-teardown.d.ts.map +1 -0
- package/dist/cli/commands/cloud-teardown.js +152 -0
- package/dist/cli/commands/cloud-teardown.js.map +1 -0
- package/dist/cli/commands/console.d.ts.map +1 -1
- package/dist/cli/commands/console.js +108 -8
- package/dist/cli/commands/console.js.map +1 -1
- package/dist/cli/commands/creds.d.ts +2 -0
- package/dist/cli/commands/creds.d.ts.map +1 -0
- package/dist/cli/commands/creds.js +62 -0
- package/dist/cli/commands/creds.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +7 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +405 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +1 -0
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +67 -0
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +9 -2
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/run.d.ts +6 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +121 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +52 -16
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +39 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +58 -16
- package/dist/cli/main.js.map +1 -1
- package/dist/credentials/builtins/aws.d.ts +4 -0
- package/dist/credentials/builtins/aws.d.ts.map +1 -0
- package/dist/credentials/builtins/aws.js +33 -0
- package/dist/credentials/builtins/aws.js.map +1 -0
- package/dist/credentials/builtins/bugsnag-token.d.ts +4 -0
- package/dist/credentials/builtins/bugsnag-token.d.ts.map +1 -0
- package/dist/credentials/builtins/bugsnag-token.js +18 -0
- package/dist/credentials/builtins/bugsnag-token.js.map +1 -0
- package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -1
- package/dist/credentials/builtins/github-webhook-secret.js +2 -1
- package/dist/credentials/builtins/github-webhook-secret.js.map +1 -1
- package/dist/credentials/builtins/index.d.ts.map +1 -1
- package/dist/credentials/builtins/index.js +10 -0
- package/dist/credentials/builtins/index.js.map +1 -1
- package/dist/credentials/builtins/netlify-token.d.ts +4 -0
- package/dist/credentials/builtins/netlify-token.d.ts.map +1 -0
- package/dist/credentials/builtins/netlify-token.js +18 -0
- package/dist/credentials/builtins/netlify-token.js.map +1 -0
- package/dist/credentials/builtins/openai-key.d.ts +4 -0
- package/dist/credentials/builtins/openai-key.d.ts.map +1 -0
- package/dist/credentials/builtins/openai-key.js +38 -0
- package/dist/credentials/builtins/openai-key.js.map +1 -0
- package/dist/credentials/builtins/x-twitter-api.d.ts +4 -0
- package/dist/credentials/builtins/x-twitter-api.d.ts.map +1 -0
- package/dist/credentials/builtins/x-twitter-api.js +28 -0
- package/dist/credentials/builtins/x-twitter-api.js.map +1 -0
- package/dist/credentials/prompter.d.ts.map +1 -1
- package/dist/credentials/prompter.js +8 -5
- package/dist/credentials/prompter.js.map +1 -1
- package/dist/docker/cloud-run-runtime.d.ts +61 -0
- package/dist/docker/cloud-run-runtime.d.ts.map +1 -0
- package/dist/docker/cloud-run-runtime.js +510 -0
- package/dist/docker/cloud-run-runtime.js.map +1 -0
- package/dist/docker/ecs-runtime.d.ts +73 -0
- package/dist/docker/ecs-runtime.d.ts.map +1 -0
- package/dist/docker/ecs-runtime.js +596 -0
- package/dist/docker/ecs-runtime.js.map +1 -0
- package/dist/docker/image.d.ts.map +1 -1
- package/dist/docker/image.js +3 -2
- package/dist/docker/image.js.map +1 -1
- package/dist/docker/local-runtime.d.ts +19 -0
- package/dist/docker/local-runtime.d.ts.map +1 -0
- package/dist/docker/local-runtime.js +209 -0
- package/dist/docker/local-runtime.js.map +1 -0
- package/dist/docker/network.d.ts +1 -1
- package/dist/docker/network.d.ts.map +1 -1
- package/dist/docker/network.js +2 -1
- package/dist/docker/network.js.map +1 -1
- package/dist/docker/runtime.d.ts +90 -0
- package/dist/docker/runtime.d.ts.map +1 -0
- package/dist/docker/runtime.js +2 -0
- package/dist/docker/runtime.js.map +1 -0
- package/dist/gateway/index.d.ts +8 -2
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +16 -8
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/routes/credentials.d.ts +5 -0
- package/dist/gateway/routes/credentials.d.ts.map +1 -0
- package/dist/gateway/routes/credentials.js +17 -0
- package/dist/gateway/routes/credentials.js.map +1 -0
- package/dist/gateway/routes/logs.d.ts +5 -0
- package/dist/gateway/routes/logs.d.ts.map +1 -0
- package/dist/gateway/routes/logs.js +31 -0
- package/dist/gateway/routes/logs.js.map +1 -0
- package/dist/gateway/routes/shutdown.d.ts +2 -1
- package/dist/gateway/routes/shutdown.d.ts.map +1 -1
- package/dist/gateway/routes/shutdown.js +7 -16
- package/dist/gateway/routes/shutdown.js.map +1 -1
- package/dist/gateway/routes/webhooks.d.ts +2 -1
- package/dist/gateway/routes/webhooks.d.ts.map +1 -1
- package/dist/gateway/routes/webhooks.js +11 -4
- package/dist/gateway/routes/webhooks.js.map +1 -1
- package/dist/gateway/types.d.ts +6 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/index.d.ts +3 -2
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +286 -67
- package/dist/scheduler/index.js.map +1 -1
- package/dist/setup/scaffold.d.ts.map +1 -1
- package/dist/setup/scaffold.js +110 -50
- package/dist/setup/scaffold.js.map +1 -1
- package/dist/setup/validators.d.ts +14 -0
- package/dist/setup/validators.d.ts.map +1 -1
- package/dist/setup/validators.js +53 -0
- package/dist/setup/validators.js.map +1 -1
- package/dist/shared/asm-backend.d.ts +25 -0
- package/dist/shared/asm-backend.d.ts.map +1 -0
- package/dist/shared/asm-backend.js +107 -0
- package/dist/shared/asm-backend.js.map +1 -0
- package/dist/shared/aws-constants.d.ts +55 -0
- package/dist/shared/aws-constants.d.ts.map +1 -0
- package/dist/shared/aws-constants.js +55 -0
- package/dist/shared/aws-constants.js.map +1 -0
- package/dist/shared/config.d.ts +25 -5
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +15 -22
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/credential-backend.d.ts +28 -0
- package/dist/shared/credential-backend.d.ts.map +1 -0
- package/dist/shared/credential-backend.js +2 -0
- package/dist/shared/credential-backend.js.map +1 -0
- package/dist/shared/credentials.d.ts +42 -4
- package/dist/shared/credentials.d.ts.map +1 -1
- package/dist/shared/credentials.js +83 -6
- package/dist/shared/credentials.js.map +1 -1
- package/dist/shared/filesystem-backend.d.ts +18 -0
- package/dist/shared/filesystem-backend.d.ts.map +1 -0
- package/dist/shared/filesystem-backend.js +86 -0
- package/dist/shared/filesystem-backend.js.map +1 -0
- package/dist/shared/gsm-backend.d.ts +35 -0
- package/dist/shared/gsm-backend.d.ts.map +1 -0
- package/dist/shared/gsm-backend.js +208 -0
- package/dist/shared/gsm-backend.js.map +1 -0
- package/dist/shared/remote.d.ts +11 -0
- package/dist/shared/remote.d.ts.map +1 -0
- package/dist/shared/remote.js +29 -0
- package/dist/shared/remote.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +13 -4
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/plain-logger.d.ts +5 -0
- package/dist/tui/plain-logger.d.ts.map +1 -0
- package/dist/tui/plain-logger.js +80 -0
- package/dist/tui/plain-logger.js.map +1 -0
- package/dist/tui/status-tracker.d.ts +3 -2
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js.map +1 -1
- package/dist/webhooks/definitions/github.js +1 -1
- package/dist/webhooks/definitions/github.js.map +1 -1
- package/dist/webhooks/definitions/sentry.js +1 -1
- package/dist/webhooks/definitions/sentry.js.map +1 -1
- package/dist/webhooks/providers/github.d.ts +1 -1
- package/dist/webhooks/providers/github.d.ts.map +1 -1
- package/dist/webhooks/providers/github.js +13 -9
- package/dist/webhooks/providers/github.js.map +1 -1
- package/dist/webhooks/providers/sentry.d.ts +1 -1
- package/dist/webhooks/providers/sentry.d.ts.map +1 -1
- package/dist/webhooks/providers/sentry.js +12 -9
- package/dist/webhooks/providers/sentry.js.map +1 -1
- package/dist/webhooks/registry.d.ts +1 -1
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/registry.js +20 -13
- package/dist/webhooks/registry.js.map +1 -1
- package/dist/webhooks/types.d.ts +16 -6
- package/dist/webhooks/types.d.ts.map +1 -1
- package/docker/Dockerfile +4 -1
- package/package.json +10 -1
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/setup.js +0 -50
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/docker/container.d.ts +0 -19
- package/dist/docker/container.d.ts.map +0 -1
- package/dist/docker/container.js +0 -73
- package/dist/docker/container.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
+
import { confirm } from "@inquirer/prompts";
|
|
4
|
+
import { execFileSync } from "child_process";
|
|
5
|
+
import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
|
|
6
|
+
import { discoverAgents } from "../../shared/config.js";
|
|
7
|
+
import { STSClient, GetCallerIdentityCommand } from "@aws-sdk/client-sts";
|
|
8
|
+
import { IAMClient, DeleteRolePolicyCommand, DeleteRoleCommand } from "@aws-sdk/client-iam";
|
|
9
|
+
import { AWS_CONSTANTS } from "../../shared/aws-constants.js";
|
|
10
|
+
export async function execute(opts) {
|
|
11
|
+
const projectPath = resolve(opts.project);
|
|
12
|
+
const configPath = resolve(projectPath, "config.toml");
|
|
13
|
+
if (!existsSync(configPath)) {
|
|
14
|
+
console.log("No config.toml found. Nothing to tear down.");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const rawConfig = parseTOML(readFileSync(configPath, "utf-8"));
|
|
18
|
+
const cloud = rawConfig.cloud;
|
|
19
|
+
if (!cloud || !cloud.provider) {
|
|
20
|
+
console.log("No [cloud] section in config.toml. Nothing to tear down.");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
console.log(`\n=== Cloud Teardown (${cloud.provider}) ===\n`);
|
|
24
|
+
const ok = await confirm({
|
|
25
|
+
message: "This will delete per-agent IAM resources and remove the [cloud] config. Continue?",
|
|
26
|
+
default: false,
|
|
27
|
+
});
|
|
28
|
+
if (!ok) {
|
|
29
|
+
console.log("Aborted.");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await teardownCloud(projectPath, cloud);
|
|
33
|
+
// Remove [cloud] from config.toml
|
|
34
|
+
delete rawConfig.cloud;
|
|
35
|
+
writeFileSync(configPath, stringifyTOML(rawConfig));
|
|
36
|
+
console.log(`Removed [cloud] section from ${configPath}`);
|
|
37
|
+
console.log("\nCloud teardown complete.");
|
|
38
|
+
}
|
|
39
|
+
export async function teardownCloud(projectPath, cloud) {
|
|
40
|
+
if (cloud.provider === "cloud-run") {
|
|
41
|
+
await teardownGcp(projectPath, cloud);
|
|
42
|
+
}
|
|
43
|
+
else if (cloud.provider === "ecs") {
|
|
44
|
+
await teardownAws(projectPath, cloud);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw new Error(`Unknown cloud provider: "${cloud.provider}"`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function teardownGcp(projectPath, cloud) {
|
|
51
|
+
const { gcpProject } = cloud;
|
|
52
|
+
if (!gcpProject) {
|
|
53
|
+
console.log("Incomplete GCP config (no project). Skipping IAM teardown.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
gcloud(["auth", "print-access-token"], gcpProject);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
throw new Error("gcloud CLI is not authenticated. Run 'gcloud auth login' first.\n" +
|
|
61
|
+
`Original error: ${err.message}`);
|
|
62
|
+
}
|
|
63
|
+
const agents = discoverAgents(projectPath);
|
|
64
|
+
if (agents.length === 0) {
|
|
65
|
+
console.log("No agents found. Skipping IAM teardown.");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
console.log(`Removing Cloud Run service accounts for ${agents.length} agent(s)...\n`);
|
|
69
|
+
for (const name of agents) {
|
|
70
|
+
const saName = AWS_CONSTANTS.serviceAccountName(name);
|
|
71
|
+
const saEmail = AWS_CONSTANTS.serviceAccountEmail(name, gcpProject);
|
|
72
|
+
console.log(` Agent: ${name}`);
|
|
73
|
+
console.log(` Deleting SA: ${saEmail}`);
|
|
74
|
+
try {
|
|
75
|
+
gcloud([
|
|
76
|
+
"iam", "service-accounts", "delete", saEmail,
|
|
77
|
+
"--quiet",
|
|
78
|
+
"--project", gcpProject,
|
|
79
|
+
], gcpProject);
|
|
80
|
+
console.log(` Deleted`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
if (err.message?.includes("NOT_FOUND") || err.message?.includes("not found")) {
|
|
84
|
+
console.log(` Not found (already deleted)`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(` Warning: ${err.message}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
console.log("");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function teardownAws(projectPath, cloud) {
|
|
94
|
+
const { awsRegion } = cloud;
|
|
95
|
+
if (!awsRegion) {
|
|
96
|
+
console.log("Incomplete AWS config (no region). Skipping IAM teardown.");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const stsClient = new STSClient({ region: awsRegion });
|
|
100
|
+
const iamClient = new IAMClient({ region: awsRegion });
|
|
101
|
+
try {
|
|
102
|
+
await stsClient.send(new GetCallerIdentityCommand({}));
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
throw new Error("AWS CLI is not authenticated. Run 'aws configure' or set AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY.\n" +
|
|
106
|
+
`Original error: ${err.message}`);
|
|
107
|
+
}
|
|
108
|
+
const agents = discoverAgents(projectPath);
|
|
109
|
+
if (agents.length === 0) {
|
|
110
|
+
console.log("No agents found. Skipping IAM teardown.");
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
console.log(`Removing ECS task roles for ${agents.length} agent(s)...\n`);
|
|
114
|
+
for (const name of agents) {
|
|
115
|
+
const roleName = AWS_CONSTANTS.taskRoleName(name);
|
|
116
|
+
console.log(` Agent: ${name}`);
|
|
117
|
+
console.log(` Deleting role: ${roleName}`);
|
|
118
|
+
// Must delete inline policies before deleting the role
|
|
119
|
+
try {
|
|
120
|
+
await iamClient.send(new DeleteRolePolicyCommand({
|
|
121
|
+
RoleName: roleName,
|
|
122
|
+
PolicyName: "SecretsAccess",
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Policy may not exist
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
await iamClient.send(new DeleteRoleCommand({
|
|
130
|
+
RoleName: roleName,
|
|
131
|
+
}));
|
|
132
|
+
console.log(` Deleted`);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (err.name === "NoSuchEntityException") {
|
|
136
|
+
console.log(` Not found (already deleted)`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
console.log(` Warning: ${err.message}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
console.log("");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function gcloud(args, _project) {
|
|
146
|
+
return execFileSync("gcloud", args, {
|
|
147
|
+
encoding: "utf-8",
|
|
148
|
+
timeout: 30_000,
|
|
149
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
150
|
+
}).trim();
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=cloud-teardown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-teardown.js","sourceRoot":"","sources":["../../../src/cli/commands/cloud-teardown.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"AA0EA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ItE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { resolve, join } from "path";
|
|
2
|
-
import { readFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
|
|
2
|
+
import { readFileSync, existsSync, mkdirSync, writeFileSync, readdirSync, statSync } from "fs";
|
|
3
3
|
import { homedir } from "os";
|
|
4
4
|
import { loadCredentialField } from "../../shared/credentials.js";
|
|
5
|
-
import { discoverAgents, loadAgentConfig } from "../../shared/config.js";
|
|
5
|
+
import { discoverAgents, loadAgentConfig, loadGlobalConfig } from "../../shared/config.js";
|
|
6
|
+
import { CREDENTIALS_DIR } from "../../shared/paths.js";
|
|
6
7
|
const AL_KEYBINDINGS = {
|
|
7
8
|
newLine: ["shift+enter", "alt+enter"],
|
|
8
9
|
followUp: [],
|
|
@@ -47,9 +48,23 @@ USER node
|
|
|
47
48
|
|
|
48
49
|
If the agent needs a fundamentally different base (e.g. a Python-heavy agent that should use \`python:3.12-slim\` instead of \`node:20-slim\`), you can use any base image — just make sure to install Node.js and set up the \`node\` user (uid 1000) since the container entry point requires them.
|
|
49
50
|
|
|
51
|
+
### Model configuration
|
|
52
|
+
|
|
53
|
+
The project's \`config.toml\` defines a default \`[model]\` that all agents inherit. Do NOT add a \`[model]\` section to an agent's \`agent-config.toml\` unless the user specifically wants that agent to use a different model or thinking level than the project default. Omitting \`[model]\` from the agent config is correct — it will inherit from the project.
|
|
54
|
+
|
|
55
|
+
### Credentials
|
|
56
|
+
|
|
57
|
+
The available credentials are listed below under "Available Credentials". Use these when writing the agent's \`credentials\` array in \`agent-config.toml\`. Reference them as \`"type:instance"\` (e.g. \`"github_token:default"\`). For default instances, you can omit the \`:default\` suffix.
|
|
58
|
+
|
|
59
|
+
When a credential type has **multiple instances** (e.g. \`github_webhook_secret:myapp\` and \`github_webhook_secret:staging\`), ask the user which instance they want to use for this agent. Do not guess.
|
|
60
|
+
|
|
61
|
+
If a required credential is missing from the available list, tell the user to run \`al doctor\` to set it up, then re-open the console.
|
|
62
|
+
|
|
50
63
|
When the user asks to create an agent:
|
|
51
64
|
- Ask which template they want and walk them through configuring it
|
|
65
|
+
- Check the available credentials and use what's there; ask the user to choose when there are multiple instances of a credential type
|
|
52
66
|
- Create the agent directory with \`agent-config.toml\`, \`PLAYBOOK.md\`, and a \`Dockerfile\` if the playbook requires tools not in the base image
|
|
67
|
+
- Do NOT include \`[model]\` in agent-config.toml unless the user asks for a different model than the project default
|
|
53
68
|
- **IMPORTANT:** Agent playbooks must be detailed and prescriptive with step-by-step commands. Copy the example playbook from the "Example Playbook" section above and customize it — do NOT write simplified or abbreviated instructions.
|
|
54
69
|
`;
|
|
55
70
|
const NO_AGENTS_INITIAL_MESSAGE = `Help me create my first agent.`;
|
|
@@ -64,7 +79,7 @@ export async function execute(opts) {
|
|
|
64
79
|
const agentSummaries = agents.map((name) => {
|
|
65
80
|
try {
|
|
66
81
|
const config = loadAgentConfig(projectPath, name);
|
|
67
|
-
return `- ${name}:
|
|
82
|
+
return `- ${name}: schedule=${config.schedule || "webhook-only"}`;
|
|
68
83
|
}
|
|
69
84
|
catch {
|
|
70
85
|
return `- ${name}: (could not load config)`;
|
|
@@ -106,12 +121,29 @@ export async function execute(opts) {
|
|
|
106
121
|
console.log(`Shortcuts: ${shortcuts.join(", ")}\n`);
|
|
107
122
|
const { AuthStorage, createAgentSession, DefaultResourceLoader, SessionManager, SettingsManager, createCodingTools, InteractiveMode, } = await import("@mariozechner/pi-coding-agent");
|
|
108
123
|
const { getModel } = await import("@mariozechner/pi-ai");
|
|
124
|
+
const globalConfig = loadGlobalConfig(projectPath);
|
|
125
|
+
const modelConfig = globalConfig.model || {
|
|
126
|
+
provider: "anthropic",
|
|
127
|
+
model: "claude-sonnet-4-20250514",
|
|
128
|
+
thinkingLevel: "medium",
|
|
129
|
+
authType: "api_key",
|
|
130
|
+
};
|
|
109
131
|
const authStorage = AuthStorage.create();
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
132
|
+
if (modelConfig.authType !== "pi_auth") {
|
|
133
|
+
if (modelConfig.provider === "anthropic") {
|
|
134
|
+
const credential = loadCredentialField("anthropic_key", "default", "token");
|
|
135
|
+
if (credential) {
|
|
136
|
+
authStorage.setRuntimeApiKey("anthropic", credential);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (modelConfig.provider === "openai") {
|
|
140
|
+
const credential = loadCredentialField("openai_key", "default", "token");
|
|
141
|
+
if (credential) {
|
|
142
|
+
authStorage.setRuntimeApiKey("openai", credential);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
113
145
|
}
|
|
114
|
-
const model = getModel(
|
|
146
|
+
const model = getModel(modelConfig.provider, modelConfig.model);
|
|
115
147
|
// Load AGENTS.md context, appending agent summaries or no-agents guidance
|
|
116
148
|
let fullContext = agentsContent || "";
|
|
117
149
|
if (agents.length === 0) {
|
|
@@ -120,6 +152,14 @@ export async function execute(opts) {
|
|
|
120
152
|
else if (agentSummaries.length > 0) {
|
|
121
153
|
fullContext += `\n\n## Current Agents\n\n${agentSummaries.join("\n")}`;
|
|
122
154
|
}
|
|
155
|
+
// Append available credentials
|
|
156
|
+
const credInventory = collectCredentialInventory();
|
|
157
|
+
if (credInventory) {
|
|
158
|
+
fullContext += `\n\n## Available Credentials\n\nThese credentials are configured locally (from \`al creds ls\`):\n\n${credInventory}\n`;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
fullContext += `\n\n## Available Credentials\n\nNo credentials configured yet. The user should run \`al doctor\` to set them up.\n`;
|
|
162
|
+
}
|
|
123
163
|
const resourceLoader = new DefaultResourceLoader({
|
|
124
164
|
noExtensions: true,
|
|
125
165
|
...(fullContext
|
|
@@ -140,7 +180,7 @@ export async function execute(opts) {
|
|
|
140
180
|
const { session } = await createAgentSession({
|
|
141
181
|
cwd: projectPath,
|
|
142
182
|
model,
|
|
143
|
-
thinkingLevel:
|
|
183
|
+
thinkingLevel: modelConfig.thinkingLevel,
|
|
144
184
|
authStorage,
|
|
145
185
|
resourceLoader,
|
|
146
186
|
tools: createCodingTools(projectPath),
|
|
@@ -170,4 +210,64 @@ function readKeybindings() {
|
|
|
170
210
|
return {};
|
|
171
211
|
}
|
|
172
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Collect a credential inventory: type → instance[] → field[]
|
|
215
|
+
* Returns a formatted string like `al creds ls` output, or empty string if none.
|
|
216
|
+
*/
|
|
217
|
+
function collectCredentialInventory() {
|
|
218
|
+
let types;
|
|
219
|
+
try {
|
|
220
|
+
types = readdirSync(CREDENTIALS_DIR).filter((e) => {
|
|
221
|
+
try {
|
|
222
|
+
return statSync(resolve(CREDENTIALS_DIR, e)).isDirectory();
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}).sort();
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return "";
|
|
231
|
+
}
|
|
232
|
+
const lines = [];
|
|
233
|
+
for (const type of types) {
|
|
234
|
+
const typeDir = resolve(CREDENTIALS_DIR, type);
|
|
235
|
+
let instances;
|
|
236
|
+
try {
|
|
237
|
+
instances = readdirSync(typeDir).filter((e) => {
|
|
238
|
+
try {
|
|
239
|
+
return statSync(resolve(typeDir, e)).isDirectory();
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
}).sort();
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
for (const instance of instances) {
|
|
250
|
+
const instanceDir = resolve(typeDir, instance);
|
|
251
|
+
let fields;
|
|
252
|
+
try {
|
|
253
|
+
fields = readdirSync(instanceDir).filter((e) => {
|
|
254
|
+
try {
|
|
255
|
+
return statSync(resolve(instanceDir, e)).isFile();
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
}).sort();
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
fields = [];
|
|
264
|
+
}
|
|
265
|
+
if (fields.length === 0)
|
|
266
|
+
continue;
|
|
267
|
+
const ref = instance === "default" ? type : `${type}:${instance}`;
|
|
268
|
+
lines.push(` ${ref} (${fields.join(", ")})`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return lines.join("\n");
|
|
272
|
+
}
|
|
173
273
|
//# sourceMappingURL=console.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creds.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/creds.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuD1C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { readdirSync, statSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { CREDENTIALS_DIR } from "../../shared/paths.js";
|
|
4
|
+
export async function list() {
|
|
5
|
+
let entries;
|
|
6
|
+
try {
|
|
7
|
+
entries = readdirSync(CREDENTIALS_DIR).filter((e) => {
|
|
8
|
+
try {
|
|
9
|
+
return statSync(resolve(CREDENTIALS_DIR, e)).isDirectory();
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
console.log(`No credentials found at ${CREDENTIALS_DIR}`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (entries.length === 0) {
|
|
21
|
+
console.log(`No credentials found at ${CREDENTIALS_DIR}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
for (const type of entries.sort()) {
|
|
25
|
+
const typeDir = resolve(CREDENTIALS_DIR, type);
|
|
26
|
+
let instances;
|
|
27
|
+
try {
|
|
28
|
+
instances = readdirSync(typeDir).filter((e) => {
|
|
29
|
+
try {
|
|
30
|
+
return statSync(resolve(typeDir, e)).isDirectory();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
for (const instance of instances.sort()) {
|
|
41
|
+
const instanceDir = resolve(typeDir, instance);
|
|
42
|
+
let fields;
|
|
43
|
+
try {
|
|
44
|
+
fields = readdirSync(instanceDir).filter((e) => {
|
|
45
|
+
try {
|
|
46
|
+
return statSync(resolve(instanceDir, e)).isFile();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
fields = [];
|
|
55
|
+
}
|
|
56
|
+
const ref = instance === "default" ? type : `${type}:${instance}`;
|
|
57
|
+
const fieldList = fields.sort().join(", ");
|
|
58
|
+
console.log(` ${ref} (${fieldList})`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=creds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creds.js","sourceRoot":"","sources":["../../../src/cli/commands/creds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClD,IAAI,CAAC;gBACH,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACH,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,MAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7C,IAAI,CAAC;wBACH,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBACpD,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,SAAS,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CloudConfig } from "../../shared/config.js";
|
|
2
|
+
export declare function execute(opts: {
|
|
3
|
+
project: string;
|
|
4
|
+
cloud?: boolean;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function reconcileCloudIam(projectPath: string, cloud: CloudConfig): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +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,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsGvF;AAID,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F"}
|